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

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

TPropertyEditor->"Продолжение" [D7, Win2k]


Cash ©   (2005-04-03 20:14:00) 

Толькочто посмотрел одноименную тему и вспомнил:
 Есть у меня класс TPropClass = Class(TPersistent).
 Есть редактор TEdtr = Class(TPropertyEditor)
с атрибутом [paDialog]
 Производим регистрацыю
   RegisterPropertyEditor(TypeInfo(TPropClass),nil,'',TEdtr);
 И ничего не пашит!

ВОПРОС
 В чем я ошибся?
 Проблема таже, нет связи со свойством в инспекторе.


Cash   (2005-04-09 23:17:00) [1]

Другое дело! Спасибочки!


Юрий Зотов   (2005-04-04 19:41:00) [2]

Поскольку чудес не бывает, решил проверить. И увидел, что действительно не бывает - все прекрасно связывается и все прекрасно работает. Единственное, что стоит изменить - это наследовать редактор от TClassProperty (хотя работать и без того будет, но так грамотнее и удобнее для юзера).

========== run-time unit ==========

type
 TPropClass = class(TPersistent)
 end;

 TMyComp = class(TComponent)
 private
   FPC: TPropClass;
   procedure SetPC(const Value: TPropClass);
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property PC: TPropClass read FPC write SetPC;
 end;

constructor TMyComp.Create(AOwner: TComponent);
begin
 inherited;
 FPC := TPropClass.Create
end;

destructor TMyComp.Destroy;
begin
 FPC.Free;
 inherited
end;

procedure TMyComp.SetPC(const Value: TPropClass);
begin
 FPC.Assign(Value)
end;

========== design-time unit ==========

type
 TPropClassProperty = class(TClassProperty)
 public
   function GetAttributes: TPropertyAttributes; override;
   procedure Edit; override;
 end;

procedure Register;
begin
 RegisterComponents('Examples', [TMyComp]);
 RegisterPropertyEditor(TPropClass.ClassInfo, nil, '', TPropClassProperty)
end;

procedure TPropClassProperty.Edit;
begin
 ShowMessage('OK')
end;

function TPropClassProperty.GetAttributes: TPropertyAttributes;
begin
 Result := inherited GetAttributes + [paDialog]
end;


Cash   (2005-04-04 18:34:00) [3]

Свойство объявляется как:
  Property PC: TPropClass read FPC write SetPC
 где SetPC - это процедура, а FPC - из Private секции.


Юрий Зотов   (2005-04-03 21:22:00) [4]

Если не заработает, приведите объявление свойства, с которым не связывается редактор.


Юрий Зотов   (2005-04-03 21:15:00) [5]

Попробуйте:
RegisterPropertyEditor(TPropClass.ClassInfo, nil, '', TEdtr);


Наверх

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