Criar um evento onclick para um menu em tempo de execução
Srs(as).
Estava precisando saber como criar um evento onclick para um menu cujo os itens serão montados a partir de um banco de dados em tempo de execução.
Agradecido
Estava precisando saber como criar um evento onclick para um menu cujo os itens serão montados a partir de um banco de dados em tempo de execução.
Agradecido
Luizbhering
Curtidas 0
Respostas
Xanatos
08/06/2004
Bom essa tua questao me deixou muito curioso e em funcao disso tambem quero fazer esse negocio funcionar!
A Cada MenuItem que voce criar tente fazer isso:
Item:= TMenuItem.Create(Self);
Item.Name:= ´Teste´;
Item.Caption:= ´Teste´;
Item.OnClick:= Padrao1.OnClick;
MainMenu1.Items.Add(Item);
Voce cria uma opcao padrao e deixa ela invisivel! ela só vai servir pra voce ter em cada opcao de menu um evento onclick!!!
Depois voce implementa dentro desse Padrao1.OnClick a chamada ao formulario desejado!!!
Tenta ai e vamos ver o que dá!!! :idea:
A Cada MenuItem que voce criar tente fazer isso:
Item:= TMenuItem.Create(Self);
Item.Name:= ´Teste´;
Item.Caption:= ´Teste´;
Item.OnClick:= Padrao1.OnClick;
MainMenu1.Items.Add(Item);
Voce cria uma opcao padrao e deixa ela invisivel! ela só vai servir pra voce ter em cada opcao de menu um evento onclick!!!
Depois voce implementa dentro desse Padrao1.OnClick a chamada ao formulario desejado!!!
Tenta ai e vamos ver o que dá!!! :idea:
GOSTEI 0
Paulo_amorim
08/06/2004
Olá
Crie um procedimento com parametro (Sender: TObject)...
P. Ex.:
Depois é soh atribuir...
Espero que ajude
Até+
Crie um procedimento com parametro (Sender: TObject)...
P. Ex.:
procedure MinhaFuncao(Sender: TObject);
Depois é soh atribuir...
Menu.OnClick := MinhaFuncao:
Espero que ajude
Até+
GOSTEI 0
Motta
08/06/2004
Outra solução
Crie TActions e quando criar o MenuItem a vincule ao menu.
Crie TActions e quando criar o MenuItem a vincule ao menu.
GOSTEI 0
Xanatos
08/06/2004
Paulo Amorim eu tinha tentado fazer isso mas da erro! pois onclick é um TNotifyEvent e nao uma procedura e por isso nao podemos fazer essa atribucao!!!
GOSTEI 0
Xanatos
08/06/2004
Motta voce pode passar um exemplo da criacao dos TActions?
Obrigado.
Obrigado.
GOSTEI 0
Rômulo Barros
08/06/2004
tb Aguardo.
Sobe ^
Sobe ^
GOSTEI 0
Paulo_amorim
08/06/2004
Paulo Amorim eu tinha tentado fazer isso mas da erro! pois onclick é um TNotifyEvent e nao uma procedura e por isso nao podemos fazer essa atribucao!!!
Olá
TNotify event é, na realidade, uma procedure...
type TNotifyEvent = procedure (Sender: TObject) of object
Quando vc cria uma procedure com os mesmos parâmetros que um TNotifyEvent ele deveria aceitar...
Garanta que criou a procedure com os mesmos parametros...
Se não funciona, que erro dá?
Espero que ajude
Até+
GOSTEI 0
Xanatos
08/06/2004
Deu certo! é que eu estava tentando atribuir outro evento onclick de outra opcao !!! e deu erro mas criei uma funcao simples e funcionou!!
Valeu!!!
Valeu!!!
GOSTEI 0
Info.wtomfs
08/06/2004
Galera tbm fiz isso em meu sistema,Só que meu menu chama um form que está no banco de dados como string
Form := ´Frm_Clientes´; // Essa Variável contém o form que está
gravado no banco
Formulario := TForm(FindClass(´t´+Form));
Nome.ClassName := Formulario;
Application.CreateForm(TComponentClass(Nome),Form);
Formulario.Name := Form;
Formulario.Show;
Isso Cria o Form Normalmente, só que se eu tentar acessar qualquer componente deste form através de outro da erro de memória.
Ex:
do Botão qualquer de um form qualquer,
Label1.Caption := Frm_Usuarios.Edit1.text;
Isso dá erro
Quem puder ajudar eu agradeço...
Form := ´Frm_Clientes´; // Essa Variável contém o form que está
gravado no banco
Formulario := TForm(FindClass(´t´+Form));
Nome.ClassName := Formulario;
Application.CreateForm(TComponentClass(Nome),Form);
Formulario.Name := Form;
Formulario.Show;
Isso Cria o Form Normalmente, só que se eu tentar acessar qualquer componente deste form através de outro da erro de memória.
Ex:
do Botão qualquer de um form qualquer,
Label1.Caption := Frm_Usuarios.Edit1.text;
Isso dá erro
Quem puder ajudar eu agradeço...
GOSTEI 0
Paulo_amorim
08/06/2004
Ex:
do Botão qualquer de um form qualquer,
Label1.Caption := Frm_Usuarios.Edit1.text;
Isso dá erro
Olá
Perae, até onde eu vi, esse Frm_Usuarios não está sendo declarado...
O problema ocorre porcausa do Edit1 ou do Label1
Se eh por causa do Label, tente especificar o form
Frm_Clientes.Label1.Caption...
Espero que ajude
Até+
GOSTEI 0
Xanatos
08/06/2004
Bom Paulo!
Ele ta querendo dizer que quando for feita uma chamada dinamica ao Frm_Usuarios que vai ser através do menu dinamico...e através de uma string ´Frm_Usuarios´. e depois tentar acessar este form atraves da
Label1.Caption := Frm_Usuarios.Edit1.text;
o Programa gera um erro de access violation por que o sistema nao acha o Frm_Usuarios ! pois ele vai criado nao atravéz do Frm_Usuarios : TFrm_Usuarios e sim de uma variavel Form: TForm.
Ele ta querendo dizer que quando for feita uma chamada dinamica ao Frm_Usuarios que vai ser através do menu dinamico...e através de uma string ´Frm_Usuarios´. e depois tentar acessar este form atraves da
Label1.Caption := Frm_Usuarios.Edit1.text;
o Programa gera um erro de access violation por que o sistema nao acha o Frm_Usuarios ! pois ele vai criado nao atravéz do Frm_Usuarios : TFrm_Usuarios e sim de uma variavel Form: TForm.
GOSTEI 0