Re: RES: [delphi-br] MethodAddress retornando NIL
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
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
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
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
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
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
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
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
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
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
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]