Array
(
)

Componentes Dentro de outros Componentes

Tiago Malveira
   - 30 nov 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á...


Adriano Santos
   - 30 nov 2005

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.


Tiago Malveira
   - 01 dez 2005

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....


Adriano Santos
   - 02 dez 2005


Citação:
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....



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


Uildenei
   - 02 dez 2005

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;