Главная страница
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.48 MB
Время: 0.043 c
5-1113565924
имя
2005-04-15 15:52
2005.11.27
Внимание Подлог!!!


4-1127493249
***_Diman_***
2005-09-23 20:34
2005.11.27
Глюки ListView


1-1130935984
BobbyDigital
2005-11-02 15:53
2005.11.27
Полосы прокрутки в Combobox


3-1129097530
erika
2005-10-12 10:12
2005.11.27
получении значения по дополнительной таблице


9-1121621915
DR0N
2005-07-17 21:38
2005.11.27
Как посмотреть дефолтовые значения источника света в OpenGl?