Fórum Como acessar método de uma classe descoberta dinamicamente? #273662
22/03/2005
0
Estou precisando acessar um método de uma classe. O problema é que essa classe eu descubro dinamicamente. Fica assim.
function PodeFechar(pNmForm : String) : Boolean; var oClass : TClass; begin oClass := pgc.Pages[pgc.ActivePageIndex].FindChildControl(pNmForm).ClassType; if (pgc.Pages[pgc.ActivePageIndex].FindChildControl(pNmForm) AS oClass).PodeFecharForm then (...) end;
Essa variável oClass vai sempre retornar a classe do form passado como parâmetro. Isso funciona. Mas o compilador não reconhece o método PodeFecharForm, pq a classe é uma variável q ele só vai descobrir em tempo de execução.
Como resolver esse problema?
Tem como forçar o compilador a ignorar uma linha e só verificar em tempo de execução?
Obrigado...
Wilder_lopes
Curtir tópico
+ 0Posts
22/03/2005
Motta
if ....... is TMinhaClass then
TMinhaClass(pgc.Pages[pgc.ActivePageIndex].FindChildControl(pNmForm) AS oClass).PodeFecharForm
seria isto mesmo ??!!
Gostei + 0
23/03/2005
Wilder_lopes
Mas a idéia é justamente fazer algo genérico, onde eu não precise fazer um if pra cada classe q tenho.
Eu consegui resolver utilizando um método que é padrão em todos os objetos descendentes de TCustomForm, q é o CloseQuery.
if (pgc.Pages[pgc.ActivePageIndex].FindChildControl(pNmForm) AS TCustomForm).CloseQuery then (...)
Serviu pro que eu queria, mas de qualquer forma, ainda espero pra saber se alguém sabe como fazer!
Obrigado.
Gostei + 0
23/03/2005
Marcelo Saviski
var AObject: TObject; FunctionPodeFechar: function: Boolean of Object; PodeFechar: Boolean; begin AObject := pgc.Pages[pgc.ActivePageIndex].FindChildControl(pNmForm); FunctionPodeFechar := AObject.FindMethod(´PodeFechar´); if Assigned(FunctionPodeFechar) then PodeFechar := FunctionPodeFechar else PodeFechar := False; if PodeFechar then (...) end;
Gostei + 0
23/03/2005
Wilder_lopes
Vou testar.
Obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)