Se você quer usar algo parecido com macro-substituição, o Delphi não dá
suporte para isso, porquê simplesmente isso não é previsto na sua
arquitetura. Em linguagens interpretadas, como o PHP, ou
pseudo-interpretadas, como o (ainda vivo) Clipper, isso é possível (ou seja,
pode ser ‘mamão com açúcar’, pois a arquitetura dessas linguagens assim o
permite.

 

Eu entendi o seu objetivo, por isso mesmo que sugeri uma ferramenta para
scripting, por ser mais fácil nessa abordagem fazer tais chamadas dinâmicas,
visto que um script pode ter código que pode ser criado e atribuído aos
eventos de um objeto em tempo de execução e, ainda, poder ser chamado
facilmente pelo seu nome.

 

Sds.

 

De: [email protected] [mailto:[email protected]] Em
nome de eric_developer
Enviada em: quinta-feira, 15 de julho de 2010 13:22
Para: [email protected]
Assunto: Re: RES: RES: [delphi-br] MethodAddress retornando NIL

 

  

Colega, não é executar Scripts, por favor veja o que ja postamos.

o pequeno e completo exemplo que foi postado, esta bem claro e fácil, é uma
pena que há restrições e não consegui montar nada equivalente.

O que faço facilmente em outra linguagem estruturada com poucos recursos
OOP, parece ser mosca branca de zóio verde ou extravagante demais em Delphi
rsrs.

Só me resta aguardar, tentar outros caminhos ou desistir disso, o que acho
tão simples, é um mistérios aos demais. Fiz uma pesquisa aqui, achei um
colega querendo o mesmo (tópico de uns 2 anos), entrei em contato com ele e
até hoje não conseguiu.

--- Em [email protected] <mailto:delphi-br%40yahoogrupos.com.br>
, Rubem Rocha <rubem.ro...@...> escreveu
>
> Eric, se você pensa em implementar algum tipo de automação em seus
> aplicativos, envolvendo a manipulação de elementos nele contidos, sugiro
> você pesquisar sobre ferramentas de scripting para Delphi. Uma boa
> alternativa, free e de código fonte aberto, é o PascalScript, da
RemObjects
> (http://www.remobjects.com/ps).
> 
> 
> 
> Caso não seja essa a sua necessidade, explique-a melhor, com riqueza de
> detalhes, para que possamos discutir uma alternativa técnica para tal.
> 
> 
> 
> Sds.
> 
> 
> 
> De: [email protected] <mailto:delphi-br%40yahoogrupos.com.br>
[mailto:[email protected] <mailto:delphi-br%40yahoogrupos.com.br>
] Em
> nome de eric_developer
> Enviada em: quinta-feira, 15 de julho de 2010 12:07
> Para: [email protected] <mailto:delphi-br%40yahoogrupos.com.br>

> Assunto: 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 [email protected]
<mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.com.br>
> , jalosii <jalosii@> 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
> 



 



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

Responder a