Добавление пользовательских свойств в формы

Печать
Статьи

Событие формы OnCreate генерируется, когда форма создана. Для динамически созданных форм (т.е. не перечисленных в списке форм Project->Options->Auto-create) управляется Вашим кодом - вызывая конструктор Create.

Форма в Delphi может быть создана динамически, используя Application.CreateForm (TFormClass, FormName) или FormName:= TFormClass.Create(Owner). Когда создается форма, генерируется ее событие OnCreate.

В большинстве случаев Вы размещаете код инициализации в обработчике события формы OnCreate.

Пользовательское свойство

Если Вам нужно добавить свойство для формы и инициализировать его перед событием OnCreate, Вы должны отменить конструктор формы (override).

Например, Вам нужно отменить конструктор формы Delphi, чтобы инициализировать свойство Вашей добавленной формы, вот что нужно сделать:

  • Определить свойство для формы
  • Отменить конструктор Create
  • Инициализировать Ваше свойство перед inherited Create;
  • Использовать Ваше инициализированное свойство в обработчике события OnCreate формы

interface

type
  TRunTimeForm = class(TForm)
    procedure FormCreate(Sender: TObject) ;
  private
    fMyPreCreateValue: boolean;
  public
    constructor Create(AOwner: TComponent) ; override;
    property MyPreCreateValue : boolean read fMyPreCreateValue;
  end;

implementation

constructor TRunTimeForm.Create(AOwner: TComponent) ;
begin
  fMyPreCreateValue := true;
  inherited Create(AOwner) ;
end;

procedure TRunTimeForm.FormCreate(Sender: TObject) ;
begin
  // MyPreCreateValue был инициализирован раньше, чем формы была создана!
  ShowMessage(BoolToStr(MyPreCreateValue,true)) ;
end;

Примечание: Вы не можете использовать код, который ссылается на стандартные свойства или методы компонентов, которые принадлежат форме перед вызовом inherited Create. Но Вы можете инициализировать Ваши свойства, как это было сделано выше.