GARANTIR DESCONTO

Fórum Criação de Componentes #261104

09/12/2004

0

:D Estou criando um componente, nele preciso colocar uma propriedade que é um objeto, nesta propriedade deveria aparecer uma crizinha como temos na propriedade Color=TColor, bem na minha propriedade até aparece a cruzinha, o grande porém e que quando tento espandi-la ou me é exibida a mensagem dizendo que a propriedade não pode ser expandida ou expade, mas não me mostra nada.

:?: alguém sabe como se cria este tipo de propriedade?


Mitsalito

Mitsalito

Responder

Posts

09/12/2004

Dopi

Vc tem que usar o metodo SetSubComponent(true) desse Subcomponente

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 ;



Responder

Gostei + 0

09/12/2004

Mitsalito

Cara desculpe minha falta de conhecimento, mas não entendi.
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;


Responder

Gostei + 0

09/12/2004

Dopi

Vc tb precisa fazer um override do Constructor do Componente (TX)

{ 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 ;



Responder

Gostei + 0

09/12/2004

Mitsalito

:oops: Cara tenha um pouco mais de paciencia comigo .... fis o que vc falou mas não funcionou .... no lugar do objeto que foi criado ao invéz da cruzinha ficou uma combobox.
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


Responder

Gostei + 0

09/12/2004

Mitsalito

:oops: desculpa cara eu esqueci de colocar override na frente da procedure


Responder

Gostei + 0

09/12/2004

Mitsalito

Desculpa de novo e muito obrigado pela ajuda está pronto já


Responder

Gostei + 0

09/12/2004

Dopi

Esqueci de mencionar...

O seu subcomponente deve ser descendente de TComponent... caso contrário ele não será persistente, e não gravará as propriedades...


type TY = Class A1: String; A2: TEdit; A3: TAlgumacoisa end;


Nesse caso modifique:
TY = Class
para
TY = Class( TComponent )


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar