MethodAddress - descobrir se método existe
Boa tarde,
alguém sabe como obter o ponteiro de métodos nativos ?
o código abaixo só funciona para métodos que eu crie, eu gostaria de obter o ponteiro de métodos existentes em edit, combobox, form etc
procedure TForm2.Button1Click(Sender: TObject);
var
routine : TMethod ;
Begin //routine.data:=pointer(edit1) ;
//routine.Code:=edit1.MethodAddress('setfocus') ; // nome do metodo // usando como acima, esta retornando NIL
routine.data:=pointer(form2) ;
routine.Code:=Form2.MethodAddress('teste') ; // nome do metodo
if routine.Code <> nil then
begin
ShowMessage('OK');
end; end;
Grato
var
routine : TMethod ;
Begin //routine.data:=pointer(edit1) ;
//routine.Code:=edit1.MethodAddress('setfocus') ; // nome do metodo // usando como acima, esta retornando NIL
routine.data:=pointer(form2) ;
routine.Code:=Form2.MethodAddress('teste') ; // nome do metodo
if routine.Code <> nil then
begin
ShowMessage('OK');
end; end;
Grato
Eric
Curtidas 0
Respostas
Marco Salles
14/07/2010
pq vc nã uisa RTTI
GOSTEI 0
Eric
14/07/2010
Boa tarde Marco,
vou pesquisar sobre Runtime Type Information (RTTI), mas sabe como utilizo para o exemplo que descrevi ?
achei um artigo aqui mas não me ajudou.
GOSTEI 0
Marco Salles
14/07/2010
Examplo
procedure TForm3.Button2Click(Sender: TObject);
var
// uses RTTI Delphi 2010
Ct:TRttiContext;
Tipo:TRttiType;
Met:TRttiMethod;
begin
Tipo:=CT.GetType(form3.ClassType);
for Met in Tipo.GetMethods do
if Met.Name = 'Edit1Exit' then // Por exemplo testando se tem Evento OnExit do Edit
Showmessage('tem');
end;
GOSTEI 0
Eric
14/07/2010
Marco,
obrigado novamente, mas estou usando Delphi 2009, ocorreu erros de sintaxe.
seguindo o caminho abaixo, sabe como eu continuo ?
Count := GetPropList(edit1.ClassInfo, tkMethods, nil); // retornou 79
GOSTEI 0
Marco Salles
14/07/2010
bem teria que rever meus bizuz antigos .. Agora é so Delphi2010
Mas antes desta engenhoca toda , pq que vc não coloca esses métodos na secção published
Acho que da certo usando simplesmente seu codigo inicial
GOSTEI 0
Pedro Saraiva.
14/07/2010
Programa com códigos fontes?
Ola
pessoal, você programador que quer um aplicativo exemplo para fins
comerciais, tenho uma dica, compre o WinPhar que vem com todos os
códigos fontes e faça um programa baseado nele, sim ele também vêm com
todos os componentes para instalar, voce além de ganhar um programa
complidao, ganha tb os seus códigos fontes e seus componentes. O
programa foi desenvolvido em Delphi 7 com banco de dados paradox, e
custa apenas 20,00 reais
deem uma olhadinha ai no produto
http://produto.mercadolivre.com.br/MLB-149256966-winphar-2008-sistema-para-farmacias-e-drogarias-_JM
e ente em contato pelo e-mail pedroluissaraiva@yahoo.com.br.!
deem uma olhadinha ai no produto
http://produto.mercadolivre.com.br/MLB-149256966-winphar-2008-sistema-para-farmacias-e-drogarias-_JM
e ente em contato pelo e-mail pedroluissaraiva@yahoo.com.br.!
GOSTEI 0
Henrique Marti
14/07/2010
Sei que já faz uns anos que essa pergunta foi feita, mas vou responder para aqueles que enfrentarem esse problema:
Segundo a documentação (http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TObject.MethodAddress) o método deve ser PUBLISHED para que o "MethodAddress" funcione.
Note: You can use MethodAddress for published methods only.
Testei no pré histórico DELPHI 7 e funcionou (a pesar da documentação que linkei ser no Delphi Tokyo)
Boa sorte aos aventureiros como eu!
Segundo a documentação (http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TObject.MethodAddress) o método deve ser PUBLISHED para que o "MethodAddress" funcione.
Note: You can use MethodAddress for published methods only.
Testei no pré histórico DELPHI 7 e funcionou (a pesar da documentação que linkei ser no Delphi Tokyo)
Boa sorte aos aventureiros como eu!
GOSTEI 0