Objetos como propriedade

11/01/2010

1

Como posso passar um componente, por exemplo, um TEdit ou TButton, como propriedade de uma classe?
seria assim ...

Classe:
--------

TMyClass = class
   private
      fControl: TWinControl;
   ...

   public
      property Control: TWinControl read fControl write fControl;
   ...
   end;


Código do programa:
--------------------------

NovaClasse = TMyClass.Create;

NovaClasse.Control := edit1;


A propriedade Control de TMyClass deveria manipular o componente passado nesta propriedade, mas o valor da propriedade está ficando com nil.
O que está errado no código acima?

Responder

Posts

11/01/2010

Pjrm1470

Já tentou setar a propriedade como TEdit? (a respectiva classe e não a ansestral) Tentai e da um retorno. Num form principal o exemplo é igual. Veja a classe TCustomForm (É a ansestral da TForm). O componente MainMenu que colocamos... veja como ele é feito.   Muitas vezes aprendemos olhando os que ja estão prontos.
Responder
Valeu pela ajuda, mas preciso manter a propriedade como WinControl.
Fiz uma alteração na classe usando métodos para ler e escrever na propriedade e deu certo.


TMyClass = class
   private
      fControl: TWinControl;

      function GetControl: TWinControl;
      procedure SetControl(Sender: TWinControl);
   ...

   public
      property Control: TWinControl read GetControl write SetControl;
   ...
   end;

Responder