Fórum Criação de Componentes #261104
09/12/2004
0
:?: alguém sabe como se cria este tipo de propriedade?
Mitsalito
Curtir tópico
+ 0Posts
09/12/2004
Dopi
Veja no Exemplo abaixo, onde o Componente ACBrCHQ cria uma instancia do SubComponente ACBrDevice
constructor TACBrCHQ.Create(AOwner: TComponent);
begin
inherited create( AOwner );
fsAtivo := false ;
fsModelo := chqNenhuma ;
{ Instanciando SubComponente TACBrDevice }
fsDevice := TACBrDevice.Create( self ) ; { O dono é o proprio componente }
fsDevice.Name := ´ACBrDevice´ ; { Apenas para aparecer no Object Inspector}
fsDevice.SetSubComponent( true );{ para gravar no DFM/XFM }
fsDevice.Porta := ´COM1´;
fsDevice.Serial.DeadlockTimeout := 1000 ;
Gostei + 0
09/12/2004
Mitsalito
vamos supor
tenho o componente X: TX
neste componete tenho a propriedade Y: TY
onde
type
TY = Class
A1: String;
A2: TEdit;
A3: TAlgumacoisa
end;
Este tipo está declarado em uma outra unit e eu gostaria que ele fosse mostrado no componente x com a cruzinha na frente para se fazer o preenchimento;
Gostei + 0
09/12/2004
Dopi
{ Componente X }
TX = class( TComponent )
private
fsY : TY ;
public
constructor Create(AOwner: TComponent); override;
published
{ Instancia do Componente Y }
property Y : TY read fsY ;
end;
No Implamentation
constructor TX.Create(AOwner: TComponent);
begin
inherited create( AOwner );
{ Instanciando SubComponente TY }
fsY := TY.Create( self ) ; { O dono é o proprio componente }
fsY.Name := ´ComponenteY´ ;
fsY.SetSubComponent( true ); { para gravar as propriedades do Subcomponente no DFM/XFM }
end ;
Gostei + 0
09/12/2004
Mitsalito
dai coloquei um showmessagem no metodo contructor que estádeclarado direitinho no public e vi que não está sendo feito nada lá dentro.
tá brabo cara
Gostei + 0
09/12/2004
Mitsalito
Gostei + 0
09/12/2004
Mitsalito
Gostei + 0
09/12/2004
Dopi
O seu subcomponente deve ser descendente de TComponent... caso contrário ele não será persistente, e não gravará as propriedades...
Nesse caso modifique:
TY = Class
para
TY = Class( TComponent )
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)