Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

PropertyEditor, paSubProperties [D6, Win2k]


Kair ©   (2004-11-02 09:42:00) 

Как сделать PropertyEditor свойства, чтобы свойство было со знаком "+" в ObjectInspector?
В справке написано, что надо переписать метод GetAttributes так
function GetAttributes: TPropertyAttributes;
begin
Result := [paSubProperties];
end;
А вот дальше в справке написано, что надо еще переписать метод procedure GetProperties(Proc: TGetPropProc); Только вот я не знаю, что там надо написать... И у меня получается, если не переписывать этот метод, то, что в ObjectInspector плюс рисуется, и по нажатию на него вместо "+" рисуется "-", но подсвойств не видно...


jack128   (2004-11-03 19:01:00) [1]

Юрий Зотов ©   (02.11.04 12:59) [2]
Извините, а какое же это имеет отношение к сабжу?


Как это какое?? Это же как раз илюстрация вашего поста, о том какие условия должны выполняться, чтобы "плюсик" работал сам по себе ;-)


code2k   (2004-11-03 18:52:00) [2]


> Юрий Зотов ©   (02.11.04 12:59) [2]

По просьбе автора вопроса, перенесено из чата.
Сори, если не по теме, мы сначала не поняли друг друга, о чем ведем речь.


Юрий Зотов   (2004-11-02 12:59:00) [3]

> code2k ©   (02.11.04 10:15) [1]

Извините, а какое же это имеет отношение к сабжу?

> Kair ©   (02.11.04 09:42)

Если Ваш объект является потомком TPersistent (но не TComponent) и его нужные свойства (не поля, а именно свойства) находятся в секции published, то после включения paSubProperties плюсик будет работать правильно сам по себе и список свойcтв тоже появится сам по себе (а если это все же не так, значит, что-то сделано неверно и нужно видеть код).

Если же хотя бы одно из этих двух условий не выполняется, то придется делать список ручками. Как именно - посмотрите в коде TClassProperty.GetProperties.


code2k   (2004-11-02 10:15:00) [4]

TCurentRowStyle = class(TPersistent)
 private
   FControl: TControl; // Grid Control
   FOnChange: TNotifyEvent;
   FColor: TColor;
   FUseColor: Boolean;
   procedure SetColor(const Value: TColor);
   procedure SetUseColor(const Value: Boolean);
 protected
   procedure Change; dynamic;
   property Control: TControl read FControl;
 public
   constructor Create(Control: TControl); virtual;
   property OnChange: TNotifyEvent read FOnChange write FOnChange;
 published
   property Color: TColor read FColor write SetColor default clNone;
   property UseColor: Boolean read FUseColor write SetUseColor default False;
 end;

 TCustomGridMy = class(TCustomControl)
 private
   FCurentRowStyle: TCurentRowStyle;
   procedure SetCurentRow(const Value: TCurentRowStyle);
 protected
 public
 published
   property CurentRowStyle: TCurentRowStyle read FCurentRowStyle write SetCurentRow;
 end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо