Componentes Dentro de outros Componentes

30/11/2005

Olá pessoal...
Gostaria de saber se alguem pode me ajudar quanto a criação de componentes internos a outros componentes.
Estou tentando colocar um SimpleDataSet dentro de um componente q estou fazendo mas não consigo fazer as propriedades do SimpleDataSet aparecerem no object inspector.

Estou fazendo da seguinte maneira!
Declaro o campo FDataSet do tipo TSimpleDataSet e uma propriedade do mesmo tipo...
No Constructor do meu Componente tenho a seguinte codificação para a criação do SimpleDataSet...

Constructor Create(AOwner: TComponent);
begin
FDataSet := TSimpleDataSet.Create(Self);
with FDataSet do
begin
SetSubComponent(True);
Name := ´InternalDataSet´;
end;
end;

Fazendo dessa maneira não consigo que as propriedades e eventos do meu SimpleDataSet apareçam no object inspector...
Alguém saberia me responder onde estou errando?
Agradeço desde já...


Tiago Malveira

Respostas

30/11/2005

Adriano Santos

Pode colocar mais código fonte? Tô achando que é a forma que declarou o componente interno. Precisa declarar a classe dele se nao me engano.


Responder Citar

01/12/2005

Tiago Malveira

Eis a classe onde está o problema...

TCliente = class(TComponent)
private
FDataSet: TSimpleDataSet;
FNome: string;
FFone: string;
FOnConvertError: TNotifyEvent;

public
constructor Create(AOwner: TComponent);

published
property Nome: string read FNome write FNome;
property Fone: string read FFone write FFone;
property DataSet: TSimpleDataSet read FDataSet write FDataSet;
property OnConvertError: TNotifyEvent read FOnConvertError write FOnConvertError;

end;

O constructor eh o mesmo q postei anteriormente....


Responder Citar

02/12/2005

Adriano Santos

[quote:2dcb043e68=´Tiago Malveira´]Eis a classe onde está o problema...

TCliente = class(TComponent)
private
FDataSet: TSimpleDataSet;
FNome: string;
FFone: string;
FOnConvertError: TNotifyEvent;

public
constructor Create(AOwner: TComponent);

published
property Nome: string read FNome write FNome;
property Fone: string read FFone write FFone;
property DataSet: TSimpleDataSet read FDataSet write FDataSet;
property OnConvertError: TNotifyEvent read FOnConvertError write FOnConvertError;

end;

O constructor eh o mesmo q postei anteriormente....[/quote:2dcb043e68]


Tiago, desculpe-me a demora...tah embaçado aki.
Meu, tah certo seu componente. O que vc quer exatamente?


Responder Citar

02/12/2005

Uildenei

pelo que entendi ... vc estav endo somente o nome da propriedade .. e clica no ´+´ para expandir a arvore e nao aparece nada ..


se for isso .. eh simples: no metodo Constructor da classe principal (onde vc esta inserindo a propriedade) antes do Inherited faça a criação da classe filha.

algo assim:

constructor .... create..
begin
FDataSet:=TClasse.Create(...);
inherited;
codigo restante.....
end;


Responder Citar