GARANTIR DESCONTO

Fórum duvida em criação de componente #344384

11/08/2007

0

um exemplo da minha duvida:

unit Exemplo;

interface

uses
  SysUtils, Classes, DB, DBClient;

type
  TExemplo = class(TComponent)
  private
    FCDS: TClientDataSet;
    FDTS: TDataSource;
    FSQL: String;
  protected
    property CDS: TClientDataSet read FCDS write FCDS;
    property DTS: TDataSource read FDTS write FDTS;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property SQL: String read FSQL write FSQL;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents(´Standard´, [TExemplo]);
end;

{ TExemplo }

constructor TExemplo.Create(AOwner: TComponent);
begin
   inherited Create(AOwner);
   FCDS := TClientDataSet.Create(AOwner);
   FDTS := TDataSource.Create(AOwner);
end;

end.


porque se crio um componente que cria outros componentes dentro dele quando coloco um componente desse em um form ele cria no form alem do meu componente os componentes que foram criados dentro do meu.

tipo nesse exemplo quando arrasto o componente TExemplo em um form vem junto um ClientDataSet e um DataSource.

qual seria a maneira correta de criar componentes desse tipo ?


Fabiano Góes

Fabiano Góes

Responder

Posts

13/08/2007

Rodc

Não testei, mas acho que é porque você está falando que o owner dos componentes internos não é o seu componente e sim o owner deste (no caso o Formulário).
Tenta implementar o construtor assim:
constructor TExemplo.Create(AOwner: TComponent); 
begin 
   inherited Create(AOwner); 
   FCDS := TClientDataSet.Create(self); 
   FDTS := TDataSource.Create(self); 
end; 

Não esqueça de fazer o destrutor da classe para liberar os dois componentes criados.


Responder

Gostei + 0

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

Aceitar