Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

TPropertyEditor->"Продолжение"   Найти похожие ветки 

 
Cash ©   (2005-04-03 20:14) [0]

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

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


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

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


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

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


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

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


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

Поскольку чудес не бывает, решил проверить. И увидел, что действительно не бывает - все прекрасно связывается и все прекрасно работает. Единственное, что стоит изменить - это наследовать редактор от 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-09 23:17) [5]

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



Страницы: 1 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
2-1130952630
12next
2005-11-02 20:30
2005.11.27
добвить свою процедуру, в событие..


14-1131186727
Pazitron_Brain
2005-11-05 13:32
2005.11.27
Что - то с ос.


4-1127888849
Igi
2005-09-28 10:27
2005.11.27
Заблокировать клавиатуру


2-1131457851
John Doe
2005-11-08 16:50
2005.11.27
Инкапсуляция


3-1129038011
stepan_mk
2005-10-11 17:40
2005.11.27
ODAC & ORAARRAY