Chamar método

Delphi

08/04/2005

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


Rjun

Rjun

Curtidas 0

Respostas

Massuda

Massuda

08/04/2005

Você poderia dar um exemplo do que pretende fazer?


GOSTEI 0
Rjun

Rjun

08/04/2005

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 ?


GOSTEI 0
Massuda

Massuda

08/04/2005

...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.


GOSTEI 0
Rjun

Rjun

08/04/2005

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


GOSTEI 0
Massuda

Massuda

08/04/2005

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



GOSTEI 0
Rjun

Rjun

08/04/2005

Obrigado Massuda. Estudarei sua ideia.


GOSTEI 0
POSTAR