Форум: "Компоненты";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c