Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
2-1131605582
начиннающий
2005-11-10 09:53
2005.11.27
DynamicSkinForm


10-1108322843
Ермак
2005-02-13 22:27
2005.11.27
Структурированные хранилища


2-1131204074
Толян
2005-11-05 18:21
2005.11.27
Как вставить код программы в Memo


4-1127462761
Still Swamp
2005-09-23 12:06
2005.11.27
Уходит фокус после keybd_event VK_RIGHT


4-1127471099
HelpMy
2005-09-23 14:24
2005.11.27
служба и база данных




   Наверх