Свои свойства в инспекторе появляются тогда, когда производится регистрация
этой формы следующим образом
RegisterCustomModule(__classid(TMyForm),__classid(TCustomModule));
После этого, в инспекторах всех форм, производных от TMyForm появятся
опубликованные свои свойства и события. Правда реализация формы-предка
должна быть оформлена в рантайме пакет. Производные формы могут создаваться
либо автоматически специально написанным для этого эспертом, либо вручную
посредством вставки в проект заранее подготовленной формы с соответсвующей
правкой dfm, h и cpp файла. Отмечу определенную особенность: в dfm форма
должна выглядеть не как inherited(чего следовало бы ожидать), а как обычная
форма. Hапример, если у нас есть базовая форма
class PACKAGE TMyForm: public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
private:
void __fastcall SetOnButton1Click(TNotifyEvent value);
TNotifyEvent __fastcall GetOnButton1Click();
void __fastcall SetOnButton2Click(TNotifyEvent value);
TNotifyEvent __fastcall GetOnButton2Click();
public: // User declarations
__fastcall TMyForm(TComponent* Owner);
__published:
__property TNotifyEvent OnButton1Click = { read=GetOnButton1Click,
write=SetOnButton1Click };
__property TNotifyEvent OnButton2Click = { read=GetOnButton2Click,
write=SetOnButton2Click };
};
которая имеет dfm
object MyForm: TMyForm
Left = 315
Top = 284
Width = 445
Height = 303
Caption = 'MyForm'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 104
Top = 224
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
end
object Button2: TButton
Left = 256
Top = 224
Width = 75
Height = 25
Caption = 'Button2'
TabOrder = 1
end
end
То dfm производной должна выглядеть точно также, за исключением
object MyForm1: TMyForm1
Left = 315
Top = 284
... и т д
h-файл производной формы будет примерно таким:
#include "TMyForm.h"
//---------------------------------------------------------------------------
class TMyForm1: public TMyForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
private: // User declarations
public: // User declarations
__fastcall TMyForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
Hу и т.д
В этом случае в инспекторе этой форме на вкладке Events появятся два
дополнительных события
OnButton1Click
OnButton2Click
Во избежании лишних споров, уточняю - это не общие рассуждения, а реально
действующий механизм, с которым я работаю уже более года.
Что касается форм, созданных стандартно через репозитарий и inherited, то
здесь, действительно, не удается заставить показать дополнительные
опубликованные свойства и события
---
*Примечание сост.: http://bcdev.narod.ru/Articles/FMPropeties.htm
Вячеслав Ермолаев
Предыдущий вопрос
|
|
Следующий вопрос
источник
by jenyok
|