Добрый день.
Возник вопрос по поводу наследования фреймов... Нигде не нашел толкового ответа.
Ситуация примерно такая: есть проект. В проекте описан TBaseFrame, у него есть конструктор, и есть событие OnCreate. Типа так:
...ля-ля-ля...
type
TBaseFrame = class(TFrame)
private
FOnCreate: TNotifyEvent;
public
constructor Create(AOwner: TComponent); override;
published
property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;
end;
...ля-ля-ля...
constructor TBaseForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if Assigned(FOnCreate) then
FOnCreate(Self);
end;
...ля-ля-ля...
С этого фрейма создаются наследники. Создаются правильно - File/New/Other/MyProject/BaseFrame. Но. В них почему-то недоступно свойство OnCreate. То есть, в инспекторе объектов оно не отображается, и присвоить свойству процедуру не удается.
Конструктор базового фрейма при этом выполняется.
...ля-ля-ля...
type
TInheritorFrame = class(TBaseFrame)
procedure OnCreateFrame(Sender: TObject);
end;
...ля-ля-ля...
procedure TInheritorFrame.OnCreateFrame(Sender: TObject); // не выполняется
begin
// что-то там
end;
...ля-ля-ля...
Прописывать отдельный конструктор для каждого фрейма как-то неохота - много их будет... Да и не ООПшно это совсем. У каждого фрейма дописывать в DFM "OnCreate = OnCreateFrame" - тоже то еще решение. Есть еще вариант попробовать установить TBaseFrame в палитру компонентов - удастся ли? Фрейм, как-никак - для него репозиторий есть.
Как дальше жить? С этим что-нибудь можно сделать?
ЗЫ: В принципе, это же все касается любого добавленного свойства.