Criação de componentes com subcomponentes

25/12/2005

4

Olá pessoal,

É muito bom estar de volta ao fórum.
Espero poder compartilhar meus modestos conhecimentos com vocês.

Gostaria de esclarecer algumas dúvidas de como criar componentes com subcomponentes agregados, inclusive com suas ´principais´ propriedades publicadas no Object Inspector ?

Abraços a todos,
AASN


Responder

Posts

26/12/2005

Dopi

Se vc usar Delphi 6 ou superior é só criar o sub-componente no metodo Create do componente principal e usar [b:498abe9d6c]SetSubComponent[/b:498abe9d6c] para expor o sub-componente ao ObjectInspector e também gravar a propriedades dele no DFM/XFM


Responder

26/12/2005

Aasn

Caro Daniel,
obrigado pela atenção.

Eu utilizo o Delphi 5 que infelizmente não tem a função SetSubCompopnent!

[]´s
AASN


Responder

26/12/2005

Dopi

Nesse caso,

Vc pode usar um Editor de propriedades que já existe no Delphi...

No mesmo fonte que vc registra o componente insira:

RegisterPropertyEditor(TypeInfo(TSeuSubComponente), TSeuComponente, ´NomeAExibir´, TClassProperty);


Responder

27/12/2005

Aasn

Valeu Daniel,

esclareceu bastante, mas ainda não está 100¬ não estou conseguindo trabalhar com os subcomponentes em tempo de execução!

vc poderia me mandar algum exemplo ?

[]´s
AASN


Responder

27/12/2005

Dopi

No projeto ACBr, vários componentes possuem um sub-componente chamado TACBrDevice... Esse sub-componente é responsável pela comunicação com os equipamentos suportados, através da Porta Serial, Paralela, ou arquivo... No D7 e superiores, usei o Setsubcomponente conforme descrito no inicio do tópico... no D5, usei o RegisterPropertyEditor... Observe o trecho de codigo que está dentro do [i:ab8d70f243]{$IFNDEF Delphi6_UP}[/i:ab8d70f243]

procedure Register;
begin
  RegisterComponents(´ACBr´, [TACBrECF, TACBrCalculadora, TACBrGAV, TACBrCHQ,
     TACBrLCB, TACBrDIS, TACBrTER, TACBrBAL, TACBrExtenso, TACBrTroco, TACBrValidador
     {$IFDEF VisualCLX}, TACBrEnterTab{$ENDIF} ]);

  { Registrando os Editores de Propriedade }
  RegisterPropertyEditor(TypeInfo(TACBrAboutInfo), nil, ´AboutACBr´,
     TACBrAboutDialogProperty);
  RegisterPropertyEditor(TypeInfo(String), TACBrGAV, ´StrComando´,
     TACBrGAVStrComandoProperty);
  RegisterPropertyEditor(TypeInfo(String), TACBrCHQ, ´ArquivoBancosINI´,
     TACBrFileNameProperty);

  {$IFNDEF Delphi6_UP}
  RegisterPropertyEditor(TypeInfo(TACBrDevice), TACBrECF, ´Device´,
    TClassProperty);
  RegisterPropertyEditor(TypeInfo(TACBrDevice), TACBrGAV, ´Device´,
    TClassProperty);
  RegisterPropertyEditor(TypeInfo(TACBrDevice), TACBrCHQ, ´Device´,
    TClassProperty);
  RegisterPropertyEditor(TypeInfo(TACBrDevice), TACBrLCB, ´Device´,
    TClassProperty);
  RegisterPropertyEditor(TypeInfo(TACBrDevice), TACBrDIS, ´Device´,
    TClassProperty);
  RegisterPropertyEditor(TypeInfo(TACBrDevice), TACBrBAL, ´Device´,
    TClassProperty);
  RegisterPropertyEditor(TypeInfo(TACBrDevice), TACBrTER, ´Device´,
    TClassProperty);
  {$ENDIF}

  { Registrando os Editores de Componente }
  RegisterComponentEditor(TACBrCalculadora, TACBrCalculadoraEditor);
  RegisterComponentEditor(TACBrECF, TACBrECFEditor);
end;



Responder

27/12/2005

Aasn

Valeu Daniel,

agora ficou claro como o Delphi 5 trabalha com os subcomponentes, obrigado!
E a propósito achei interessante a proposta do Automação Comercial Brasil, irei me inscrever como colaborador e ajudar no que for possível.

[]´s
AASN


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira