Como saber se o ActiveControl é do DataSet?

Delphi

28/08/2005

Olá, como eu faço pra saber se o ActiveControl, é descendente do TDataSet?


Desde já agradeço


Fhenrique

Fhenrique

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

28/08/2005

Cara, o que vc quer fazer?
Os componentes descentes do TDataSet são invisíveis, por isso não recebem foco, ou seja, nunca ficam como ActiveControl.


GOSTEI 0
Marco Salles

Marco Salles

28/08/2005

Olá, como eu faço pra saber se o ActiveControl, é descendente do TDataSet?


Eu acho que ActiveContro Não é uma classe ... Mas sim um método da classe TWinControl;

Mas voltamos ao foco da pergunta . De maneira geral . Cada classe sabe o seu ancestral imediato , basta utilizar a chamada ao método [b:28b11306ff](Classe.Parent).[/b:28b11306ff] Para saber todos os [b:28b11306ff]descendentes[/b:28b11306ff] de uma classe , podemos percorrer uma lista , ate a classe mais baixa TObject . Porque como sabemos todas as classes derivam da TObject

Exemplo:
procedure RetornarAsClassesDescendentes(Classe :TClass);
const
QUEBRA = #1310 + ´  |´ + 1310;
var
listagem : string;
begin
 while  (classe <> TObject)  do
    begin
    listagem := listagem + classe.ClassName + QUEBRA;
    classe   := classe.ClassParent;
    end;
  listagem := listagem + ´TObject´;
  ShowMessage(listagem);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
RetornarAsClassesDescendentes(TDataSource);
end;



GOSTEI 0
Adriano Santos

Adriano Santos

28/08/2005

[quote:3960af1700=´Marco Salles´]
Eu acho que ActiveContro Não é uma classe ... Mas sim um método da classe TWinControl;
[/quote:3960af1700]

[b:3960af1700]Marco Salles[/b:3960af1700], cara você está certo ActiveControl é um método da classe TWinControl, por isso achei estranho a pergunta do nosso colega.

Abraço


GOSTEI 0
Fhenrique

Fhenrique

28/08/2005

oops amigos, foi mals, acho q expressei errado.. :d

o que eu queria saber, eh, como eu faço pra descobrir se o componente em foco, eh um DBEdit, DBMemo, saka? os controles com acesso ao banco... :D


[]s


GOSTEI 0
Adriano Santos

Adriano Santos

28/08/2005

Uma alternativa seria no evento onEnter do componente colocar:

ShowMessage(TWinControl(Sender).ClassName);


Mas existem várias outras formas


GOSTEI 0
Fhenrique

Fhenrique

28/08/2005

valeu adriano...


:D


[]s


GOSTEI 0
POSTAR