Fórum Chamar método #276195

08/04/2005

0

Como faço para chamar um método cujo nome esta contido em um string?


Rjun

Rjun

Responder

Posts

08/04/2005

Massuda

Você poderia dar um exemplo do que pretende fazer?


Responder

Gostei + 0

08/04/2005

Rjun

O que pretendo fazer e montar um menu dinamico com todas as opçoes em uma tabela.

[b:f2f845e465]Estrutura da tabela[/b:f2f845e465]
Codigo
Descricao
Imagem
Acao

No campo acao tem q estar o método que será executado quando determinado menu for acionado. Em C# faço isso usando Reflection. Teria algo parecido em Delphi ?


Responder

Gostei + 0

08/04/2005

Massuda

...Em C# faço isso usando Reflection. Teria algo parecido em Delphi ?
O mais próximo do Reflection em Delphi é o mecanismo de RTTI, mas esse mecanismo só funciona com propriedades publicadas, não com métodos da classe.


Responder

Gostei + 0

08/04/2005

Rjun

Mas não teria outra alternativa para fazer o que quero ?


Responder

Gostei + 0

08/04/2005

Massuda

Mas não teria outra alternativa para fazer o que quero ?
Abandonando completamente a idéia de usar algo parecido com Reflection...

Um jeito bem simples seria quando criar o menuitem, fazer uma busca em uma lista de ações possíveis... algo mais ou menos assim (pseudo código)
type
  TMeuItem = record
    Acao: string;
    OnClick: TNotifyEvent;
  end;

...
const
  TABELA_DE_HANDLES: array[0..N] of TMeuItem = (
    (Acao: ´Abrir´),
...
    (Acao: ´Sair´),
  );

// este trecho cria os menuitem´s
...
begin
  ...
  // preenche a tabela de handles...
  TABELA_DE_HANDLES[0].OnClick = Abrir; // Abrir é um método
  ...
  TABELA_DE_HANDLES[N].OnClick = Sair; // Sair é um método

  // cria um item do menu
  // ... pega a Acao na tabela
  // ... busca um TABELA_DE_HANDLES[i].Acao = Acao
  // ... faz menuitem.OnClick := TABELA_DE_HANDLES[i].OnClick



Responder

Gostei + 0

08/04/2005

Rjun

Obrigado Massuda. Estudarei sua ideia.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar