Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gleison_gomes

Criação de eventos dinamicamente

Recommended Posts

Oi, pessoal!

Tenho um submenu que é construído dinamicamente a partir de um banco de dados. O(s) item(ns) é(são) do tipo RadioItem, ou seja, o usuário só pode escolher um. Como este menu é construído dinamicamente, como faço para adicionar o evento onclick a este(s) submenu(s)? Quero efetuar uma gravação numa tabela qdo o usuário clicar em um item. Segue o código abaixo.

Muito obrigado.

 

procedure TfrmPrincipal.FormShow(Sender: TObject);

var

NovoItem: TMenuItem;

NovoEvento: TNotifyEvent;

begin

dmConsult.dbConsultorio.Open;

dmConsult.qryConsultorios.Open;

if not dmConsult.qryConsultorios.Eof then

begin

while not dmConsult.qryConsultorios.Eof do

begin

NovoItem := TMenuItem.Create(Self);

NovoItem.OnClick

NovoItem.Caption := dmConsult.qryConsultoriosNOME_CONSULT.AsString;

NovoItem.RadioItem := True;

NovoItem.Name := 'Consult' + dmConsult.qryConsultoriosCOD_CONSULT.AsString;

NovoItem.GroupIndex := 55; //Um número aleatório e que seja igual para todos

NovoItem.OnClick := NovoEvento;

 

 

mnuConsultorios.Add(NovoItem);

 

dmConsult.qryConsultorios.Next;

end;

end;

 

dmConsult.qryConsultorios.Open;

dmConsult.dbConsultorio.Open;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

crie uma procedure, tipo assim:

 

[code}procedure CliqueMenu(Sender: TObject);
begin
//seu código vai aqui
end;//[/code}

e na hora de criar os menus faça isso:

NovoItem.OnClick := CliqueMenu;

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK, obrigado!Mas como faço para passar um ou mais parâmetros para este evento? Explicando melhor: cada menu tem um código diferente que será gravado numa tabela assim q o usuário clicar no item de menu. Esta gravação será executada pelo método "CliqueMenu". Como passar o parâmetro do código do registro que quero gravar numa tabela, já que o menu será montado dinamicamente?Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.