Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-15 Por tôpico Fabricio Colombo
Para o método SetFocus, seria melhor vc chamar direto o método. Por exemplo,
se vc estiver em um form, bastaria chamar

Self.FocusControl(edit1)

ou vc cria um método seu

procedure TForm1.SetFocusComponent(AComponent: TComponent);
begin
  if AComponent is TWinControl then
TWinControl(AComponent).SetFocus;
end;

Que outros métodos vc precisa invocar? Praticamente todos os métodos comuns
entre os componentes visuais, estão presentes em TControl e TWinControl, que
são as classes base.



Em 14 de julho de 2010 20:49, eric_developer
developer.syst...@yahoo.comescreveu:



 executar métodos, irei passar para minha função, o objeto e a string com o
 nome do método, exemplo:

 myCallMethod( edit1, 'SETFOCUS' ) ;

 --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br,
 Fabricio Colombo fabricio.colombo@... escreveu

 
  O que vc está pretendendo fazer Eric?
 
  Em 14 de julho de 2010 16:02, Mário Guedes jmariogue...@...escreveu:

 
  
  
   Eu fiz assim:
  
  
  
 http://eugostododelphi.blogspot.com/2010/04/como-executar-um-metodo-pelo-nome.html
  
   *José Mário Silva Guedes*
   e-mail: jmariogue...@... jmarioguedes%40gmail.com

  
  
   [As partes desta mensagem que não continham texto foram removidas]
  
  
  
 
 
  [As partes desta mensagem que não continham texto foram removidas]
 

  



[As partes desta mensagem que não continham texto foram removidas]





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
delphi-br-unsubscr...@yahoogrupos.com.br

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-15 Por tôpico eric_developer
isso é muito diferente do que preciso, mesmo assim obrigado.

--- Em delphi-br@yahoogrupos.com.br, Fabricio Colombo 
fabricio.colombo@... escreveu

 Para o método SetFocus, seria melhor vc chamar direto o método. Por exemplo,
 se vc estiver em um form, bastaria chamar
 
 Self.FocusControl(edit1)
 
 ou vc cria um método seu
 
 procedure TForm1.SetFocusComponent(AComponent: TComponent);
 begin
   if AComponent is TWinControl then
 TWinControl(AComponent).SetFocus;
 end;
 
 Que outros métodos vc precisa invocar? Praticamente todos os métodos comuns
 entre os componentes visuais, estão presentes em TControl e TWinControl, que
 são as classes base.
 
 
 
 Em 14 de julho de 2010 20:49, eric_developer
 developer.syst...@...escreveu:
 
 
 
  executar métodos, irei passar para minha função, o objeto e a string com o
  nome do método, exemplo:
 
  myCallMethod( edit1, 'SETFOCUS' ) ;
 
  --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br,
  Fabricio Colombo fabricio.colombo.mva@ escreveu
 
  
   O que vc está pretendendo fazer Eric?
  
   Em 14 de julho de 2010 16:02, Mário Guedes jmarioguedes@escreveu:
 
  
   
   
Eu fiz assim:
   
   
   
  http://eugostododelphi.blogspot.com/2010/04/como-executar-um-metodo-pelo-nome.html
   
*José Mário Silva Guedes*
e-mail: jmarioguedes@ jmarioguedes%40gmail.com
 
   
   
[As partes desta mensagem que não continham texto foram removidas]
   
   
   
  
  
   [As partes desta mensagem que não continham texto foram removidas]
  
 
   
 
 
 
 [As partes desta mensagem que não continham texto foram removidas]





Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-15 Por tôpico jalosii
Implementei sem problemas na semana passada em um sistema meu.

Qual o real problema que vc está tendo?

Sua procedure seria assim:

unit Unit2;
interface
uses ...;
type
  TForm2 = class(TForm)
  ...
  private
procedure ExecMethod(NoObjecto: TObject; Nome_Metodo: String);
  ...
var
  Form2: TForm2;
type  //tem que ser aqui, não sei explicar por que, mas se por acima do 
form no mesmo type causa erro
  TExec = procedure of object;
...

procedure TForm2.ExecMethod(NoObjecto: TObject; Nome_Metodo: String);
var
  Rotina: TMethod;
  Exec: TExec;
begin
  Rotina.Data := Pointer(NoObjeto);
  Rotina.Code := NoObjeto.MethodAddress(Nome_Metodo);//Aqui que causa 
erro pra vc?
  if not Assigned(Rotina.Code) then
exit;
  Exec := TExec(Rotina);
  Exec;
end;

...

O que eu percebi é se o método que vc quer chamar nã estiver nas 
declarações do FORM no lugar certo, o MethodAddress não encontra, tentei 
por em private e não achou, troquei o local da declaração pra acima do 
private e funcionou, no meu caso chamo uma procedure de outro form, pra 
que nesse não tenha acesso a banco de dados e está funcionando.


Verifique teu código e se tiver mais erros nos avise pra ver se pudemos 
lhe ajudar.

Alosi
DigitalSystem
Bento Gonçalves-RS


eric_developer escreveu:
 isso é muito diferente do que preciso, mesmo assim obrigado.

 --- Em delphi-br@yahoogrupos.com.br, Fabricio Colombo 
 fabricio.colombo@... escreveu
   
 Para o método SetFocus, seria melhor vc chamar direto o método. Por exemplo,
 se vc estiver em um form, bastaria chamar

 Self.FocusControl(edit1)

 ou vc cria um método seu

 procedure TForm1.SetFocusComponent(AComponent: TComponent);
 begin
   if AComponent is TWinControl then
 TWinControl(AComponent).SetFocus;
 end;

 Que outros métodos vc precisa invocar? Praticamente todos os métodos comuns
 entre os componentes visuais, estão presentes em TControl e TWinControl, que
 são as classes base.



 Em 14 de julho de 2010 20:49, eric_developer
 developer.syst...@...escreveu:

 
 executar métodos, irei passar para minha função, o objeto e a string com o
 nome do método, exemplo:

 myCallMethod( edit1, 'SETFOCUS' ) ;

 --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br,
 Fabricio Colombo fabricio.colombo.mva@ escreveu

   
 O que vc está pretendendo fazer Eric?

 Em 14 de julho de 2010 16:02, Mário Guedes jmarioguedes@escreveu:
 
 Eu fiz assim:



   
 http://eugostododelphi.blogspot.com/2010/04/como-executar-um-metodo-pelo-nome.html
   
 *José Mário Silva Guedes*
 e-mail: jmarioguedes@ jmarioguedes%40gmail.com
   
 [As partes desta mensagem que não continham texto foram removidas]



   
 [As partes desta mensagem que não continham texto foram removidas]

 
  

   
 [As partes desta mensagem que não continham texto foram removidas]

 




 

   



Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-15 Por tôpico eric_developer
Alosi,

Desta forma eu também já tinha encontrado na internet e na documentação.
Veja que se você usar sua rotina como exemplifiquei anteriormente, não 
funcionará:

ExecMethod( edit1, 'SETFOCUS' )


--- Em delphi-br@yahoogrupos.com.br, jalosii jalo...@... escreveu

 Implementei sem problemas na semana passada em um sistema meu.
 
 Qual o real problema que vc está tendo?
 
 Sua procedure seria assim:
 
 unit Unit2;
 interface
 uses ...;
 type
   TForm2 = class(TForm)
   ...
   private
 procedure ExecMethod(NoObjecto: TObject; Nome_Metodo: String);
   ...
 var
   Form2: TForm2;
 type  //tem que ser aqui, não sei explicar por que, mas se por acima do 
 form no mesmo type causa erro
   TExec = procedure of object;
 ...
 
 procedure TForm2.ExecMethod(NoObjecto: TObject; Nome_Metodo: String);
 var
   Rotina: TMethod;
   Exec: TExec;
 begin
   Rotina.Data := Pointer(NoObjeto);
   Rotina.Code := NoObjeto.MethodAddress(Nome_Metodo);//Aqui que causa 
 erro pra vc?
   if not Assigned(Rotina.Code) then
 exit;
   Exec := TExec(Rotina);
   Exec;
 end;
 
 ...
 
 O que eu percebi é se o método que vc quer chamar nã estiver nas 
 declarações do FORM no lugar certo, o MethodAddress não encontra, tentei 
 por em private e não achou, troquei o local da declaração pra acima do 
 private e funcionou, no meu caso chamo uma procedure de outro form, pra 
 que nesse não tenha acesso a banco de dados e está funcionando.
 
 
 Verifique teu código e se tiver mais erros nos avise pra ver se pudemos 
 lhe ajudar.
 
 Alosi
 DigitalSystem
 Bento Gonçalves-RS




Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-14 Por tôpico eric_developer
eu tinha olhado, mas postei aqui para saber se há alguma forma de fazer.
Alguém conhece ?

--- Em delphi-br@yahoogrupos.com.br, Rubem Rocha rubem.ro...@... escreveu

 Olha o help! MethodAddress só funciona para métods published!
 
 Sds.
 
  
 
 De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
 nome de eric_developer
 Enviada em: quarta-feira, 14 de julho de 2010 13:04
 Para: delphi-br@yahoogrupos.com.br
 Assunto: [delphi-br] MethodAddress retornando NIL
 
  
 
   
 
 Boa tarde pessoal,
 
 alguem sabe como obter o ponteiro de métodos existentes ? no exemplo, se eu
 criar o método teste para o form2, funciona, retornando o ponteiro.
 
 No lugar de form2, usarei componentes edit, combobox, etc e metodos
 existentes.
 
 procedure TForm2.teste ;
 begin
 ShowMessage('OLA');
 end;
 
 procedure TForm2.Button1Click(Sender: TObject);
 var
 routine : TMethod ;
 Begin
 
 routine.data:=pointer(form2) ;
 routine.Code:=Form2.MethodAddress('teste') ; // Nome do metodo
 if routine.Code  nil then
 begin
 ShowMessage('OK');
 end;
 
 end;
 
 Grato,
 Eric Developer Systems
 
  
 
 
 
 [As partes desta mensagem que não continham texto foram removidas]





Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-14 Por tôpico Mário Guedes
Eu fiz assim:

http://eugostododelphi.blogspot.com/2010/04/como-executar-um-metodo-pelo-nome.html

*José Mário Silva Guedes*
e-mail: jmariogue...@gmail.com


[As partes desta mensagem que não continham texto foram removidas]



Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-14 Por tôpico eric_developer
Olá José,

o seu exemplo e do about.com, em resumo é o mesmo que postei, funcionando 
somente para os próprios métodos (published), e eu quero testar 
(ponteiro)/chamar métodos do edit, combobox, form, etc, ou seja, irei informar 
o objeto do componente e a string com o nome do método.

Sabe alguma forma ?

Grato,
Eric

--- Em delphi-br@yahoogrupos.com.br, Mário Guedes jmariogue...@... escreveu

 Eu fiz assim:
 
 http://eugostododelphi.blogspot.com/2010/04/como-executar-um-metodo-pelo-nome.html
 
 *José Mário Silva Guedes*
 e-mail: jmariogue...@...
 
 
 [As partes desta mensagem que não continham texto foram removidas]





Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-14 Por tôpico Fabricio Colombo
O que vc está pretendendo fazer Eric?

Em 14 de julho de 2010 16:02, Mário Guedes jmariogue...@gmail.comescreveu:



 Eu fiz assim:


 http://eugostododelphi.blogspot.com/2010/04/como-executar-um-metodo-pelo-nome.html

 *José Mário Silva Guedes*
 e-mail: jmariogue...@gmail.com jmarioguedes%40gmail.com


 [As partes desta mensagem que não continham texto foram removidas]

  



[As partes desta mensagem que não continham texto foram removidas]





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
delphi-br-unsubscr...@yahoogrupos.com.br

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




RE: RES: [delphi-br] MethodAddress retornando NIL

2010-07-14 Por tôpico Rubem Nascimento da Rocha

A RTTI permite acesso somente aos elementos (propriedades e métodos) declarados 
na seção published de um objeto. Escopos de visibilidade abaixo disso (public, 
protected ou private) não tem como!

 

Sds.
 


To: delphi-br@yahoogrupos.com.br
From: developer.syst...@yahoo.com
Date: Wed, 14 Jul 2010 19:21:27 +
Subject: Re: RES: [delphi-br] MethodAddress retornando NIL

  



Olá José,

o seu exemplo e do about.com, em resumo é o mesmo que postei, funcionando 
somente para os próprios métodos (published), e eu quero testar 
(ponteiro)/chamar métodos do edit, combobox, form, etc, ou seja, irei informar 
o objeto do componente e a string com o nome do método.

Sabe alguma forma ?

Grato,
Eric


  
_
QUER ANEXAR VÁRIAS FOTOS NUM EMAIL? PREPARE-SE PARA O NOVO HOTMAIL. CLIQUE AQUI.
http://www.windowslive.com.br/public/product.aspx/view/1?ocid=Hotmail:Live:Hotmail:Tagline:senDimensao:QUERANEXAR80:-

[As partes desta mensagem que não continham texto foram removidas]



Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-14 Por tôpico eric_developer
Olá Rubem,
Como eu deixo os métodos do edit, combobox, etc como published ?

--- Em delphi-br@yahoogrupos.com.br, Rubem Nascimento da Rocha 
djpardalro...@... escreveu

 
 A RTTI permite acesso somente aos elementos (propriedades e métodos) 
 declarados na seção published de um objeto. Escopos de visibilidade abaixo 
 disso (public, protected ou private) não tem como!
 
  
 
 Sds.




Re: RES: [delphi-br] MethodAddress retornando NIL

2010-07-14 Por tôpico eric_developer
executar métodos, irei passar para minha função, o objeto e a string com o nome 
do método, exemplo:

myCallMethod( edit1, 'SETFOCUS' ) ;

--- Em delphi-br@yahoogrupos.com.br, Fabricio Colombo 
fabricio.colombo@... escreveu

 O que vc está pretendendo fazer Eric?
 
 Em 14 de julho de 2010 16:02, Mário Guedes jmariogue...@...escreveu:
 
 
 
  Eu fiz assim:
 
 
  http://eugostododelphi.blogspot.com/2010/04/como-executar-um-metodo-pelo-nome.html
 
  *José Mário Silva Guedes*
  e-mail: jmariogue...@... jmarioguedes%40gmail.com
 
 
  [As partes desta mensagem que não continham texto foram removidas]
 
   
 
 
 
 [As partes desta mensagem que não continham texto foram removidas]