Fórum Saber o ancestral da classe #287750
12/07/2005
0
Elas são organizadas da seguinte forma:
TFilho = class(TPai) TNeto = class(TFilho)
Então eu declaro types
TFilhoClass = class of TFilho;
Na minha factory eu executo
var oClass: TFilhoClass; begin oClass := TFilhoClass(GetClass(AClasse));
Agora a pergunta: eu gostaria de saber se a classe que eu achei é descente direto de TFilho ou de TPai?
Operadores como ´oClass is TFilho´ não funcionam.
Desde já obrigado.
Andremuller
Curtir tópico
+ 0Posts
12/07/2005
Ronaldo
procedure TForm1.Button1Click(Sender: TObject);
var
ClassRef: TClass;
begin
ListBox1.Clear;
ClassRef := Sender.ClassType;
while ClassRef <> nil do
begin
ListBox1.Items.Add(ClassRef.ClassName);
ClassRef := ClassRef.ClassParent;
end;
end;
Gostei + 0
12/07/2005
Beppe
O método InheritsFrom(C) não precisa de uma instância.
if C.InheritsFrom(SuaClasse) then
Gostei + 0
12/07/2005
Kapak
Gostei + 0
12/07/2005
Andremuller
Vou testar o InheritsFrom e depois posto o resultado no fórum
Valeu pessoal
Gostei + 0
12/07/2005
Kapak
if oClass = TFilho then ...
Gostei + 0
12/07/2005
Andremuller
Ela cria um monte de classes, algumas descentes de TPai e outras descentendes de TFilho.
pra fazer o que tu disse que teria que fazer, em alguns casos
Digamos o seguinte
TNeto´X´ = class(TFilho)
TFilho´X´ = class(TPai)
if oClasse = TNeto1 ...
else
if oClasse = TNeto2 ....
else
if oClasse = TFilho1
isso seria inviável
Gostei + 0
12/07/2005
Kapak
Outra opção seria usar a propriedade ClassName de oClass:
if SameText(oClass.ClassName, ´classex´) then
Gostei + 0
12/07/2005
Andremuller
Meu problema é resolvido com o inheritsFrom
Valeu, pessoal
Gostei + 0
12/07/2005
Beppe
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)