Fórum MainMenu #197066

25/11/2003

0

Alguem sabe como colocar uma string no evento onclick
de um objeto TMenuItem? ou como converter a string para o tipo
TNotifyEvent?


Elenice

Elenice

Responder

Posts

25/11/2003

Rafael Heise

Por falor, seja mais clara...
não entendi sua pergunta...


Responder

Gostei + 0

25/11/2003

Elenice

No menu principal existem os items do menu,
quando clico sobre um desses itens estou ativando
o evento ´onclick´ do componente. Mas estou criando
o menu dinamicamente, na inicializaçao do programa, e para
isso preciso definir tambem o que acontecera qdo alguem
clicar sobre esse menu (onclick). Soh que o evento onclick
eh do tipo TNotifyEvent, e o que eu gostaria de colocar
no onclick eh do tipo string. Existe um modo de converter
string para o TNotifyEvent???


Responder

Gostei + 0

25/11/2003

Rafael Heise

Mas porque string?
Você não vai conseguir fazer isso do jeito que você está pensando..
Como é do tipo TNotifyEvent, você precisa assimilar com TNotifyEvent.
Para isso, crie as procedures da maneira que você quer, e depois associe elas via código
MenuItem.OnClick := MeuClick;
beleza?!
Talvez isso te ajude a resolver seu problema.
Agora se você tem as suas procedures, e quer a partir do nome texto associar o evento, dai você tem que usar uma programação mais pesada que nem tenho certeza se vai mesmo funcionar ou não... então, teria que ver...
Mas talvez uma outra saida seria você usar ActionList. Talvez seja melhor... de uma olhada nisso... talvez ache o que você quer...


Responder

Gostei + 0

25/11/2003

Elenice

o problema eh q
todas as propriedades de construcao do menu vao vir de uma tabela,
inclusive a procedure a ser executada, ou seja, o nome dela,
que eu estava retirando da tabela como string....


Responder

Gostei + 0

25/11/2003

Beppe

Em vez de string, use um número de ação(1 - abrir, 2 - fechar, 3 - salvar, 4 - etc). Quando criar o item, configure a propriedade Tag dele como este número. Então você cria um método TNotifyEvent no seu form. O corpo dele deve ser algo assim:

case TMenuItem(Sender).Tag of
  0: Abre;  
  1: Fecha;  
  2: Salva;  
  3: Etc;  
end;



Responder

Gostei + 0

25/11/2003

Rafael Heise

Você pode tentar fazer o seguinte...
Já que você tem tudo do banco de dados, e traz as funções como string, você já deve ter as funções prontas na sua form certo?
Então você pode criar um record que contém os campos nome e endereco, como sendo string e TNotifyEvent respectivamente.
Dai quando você criar a sua form, você chama uma procedure sua, que aloca todas as procedures suas que você pretende usar para colcoar nos click. e para isso, você tem que ter uma variável na form que é um array da quantidade de procedure do tipo que você criou.
Então, nessa procedure, você seta para cada posição do array, o nome e a procedure que você vai usar. Depois você faz um for em cima desse array, e testa, se for do nome passado, você retorna o valor do endereco.
dai no caso é uma função que passa uma string e devolve um tnotifyevent.
não sei se da pra fazer diferente. fiquei tentando usar propinfo e talz, mas não deu certo... então...
acho que essa é a saída mais fácil atualmente!
valeu


Responder

Gostei + 0

26/11/2003

Beppe

PropInfo é para propriedades e eventos, pra métodos comuns(Button1Click, Form1Create), isto não serve...


Responder

Gostei + 0

26/11/2003

Elenice

e como faço para popular o array com os TNofyEvents??


Responder

Gostei + 0

26/11/2003

Rafael Heise

Infelizmente tem que ser na mão..
para cada posição do array você precisa setar manualmente qual a procedure é equivalente!
lamento...


Responder

Gostei + 0

26/11/2003

Elenice

aih fica complicado pq sao muitas...
umas 500 pelo menos...
Mas muito obrigada assim mesmo...


Responder

Gostei + 0

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

Aceitar