Fórum Como saber se o ActiveControl é do DataSet? #293441
28/08/2005
0
Desde já agradeço
Fhenrique
Curtir tópico
+ 0Posts
28/08/2005
Adriano Santos
Os componentes descentes do TDataSet são invisíveis, por isso não recebem foco, ou seja, nunca ficam como ActiveControl.
Gostei + 0
28/08/2005
Marco Salles
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
28/08/2005
Adriano Santos
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
29/08/2005
Fhenrique
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
29/08/2005
Adriano Santos
ShowMessage(TWinControl(Sender).ClassName);
Mas existem várias outras formas
Gostei + 0
29/08/2005
Fhenrique
:D
[]s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)