![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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);