Componentes - createwnd

Top  Previous  Next

=================================== CreateWnd ============================================

 

No exemplo abaixo há um problema. Não temos como acessar a propriedade Items enquando a

janela não for criada (janela se refere ao WinControl).

 

 type

   TFontCombo = class(TComboBox)

   public

     constructor Create (AOwner: TComponent); override;

   published

     property Items stored False;

   end;

 

 implementation

 

 constructor TFontCombo.Create (AOwner: TComponent);

 begin

   inherited Create (AOwner);

   Items.Assign (Screen.Fonts);  <---------- Não funciona no Create.

 end;

 

 

Como fazer então?

Existe um método chamado CreateWnd que é chamado depois que a janela já foi criada

O código do componente acima ficaria:

 

 type

   TFontCombo = class(TComboBox)

   public

     constructor Create (AOwner: TComponent); override;

     procedure CreateWnd; override;

   published

     property Items stored False;  <---------- isto diz que não é necessário armazenar no DFM tambem

   end;

 

 implementation

 

 constructor TFontCombo.Create (AOwner: TComponent);

 begin

   inherited Create (AOwner);

 end;

 

 procedure TFontCombo.CreateWnd;

 begin

   inherited CreateWnd;

   Items.Assign (Screen.Fonts);  <--- Aqui sim!

 end;