Criação de evento dinamicamente

Delphi

05/11/2004

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.

[i:a6a0fe3109]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;[/i:a6a0fe3109]


Gleison_gomes

Gleison_gomes

Curtidas 0

Respostas

Motta

Motta

05/11/2004

Escreva o(s) evento(s) em TActions e as vincule aos itens dinamicamente.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ActnList, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    kkkkk1: TMenuItem;
    ActionList1: TActionList;
    Action1: TAction;
    Button1: TButton;
    wwwwww1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure Action1Execute(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  wwwwww1.Action := TBasicAction(Action1);
end;

procedure TForm1.Action1Execute(Sender: TObject);
begin
  showmessage(´alo mundo´);
end;

end.




GOSTEI 0
Gleison_gomes

Gleison_gomes

05/11/2004

Muito obrigado, Motta!
Mas como faço para passar parâmetros para o evento? Quero gravar o código do item clicado em uma tabela.

Conto com sua ajuda.
Obrigado.


GOSTEI 0
Motta

Motta

05/11/2004

O método OnClick tem uma assinatura

Sender:TObject) , todo método vinculado a ele deve ter esta mesma assinatura ....

... Quero gravar o código do item clicado em uma tabela.
....

não entendi o que vc quer fazer, seria um log de uso do sistema , tipo usuario x itens menu ?


GOSTEI 0
Gleison_gomes

Gleison_gomes

05/11/2004

Mais uma vez, obrigado.

É o seguinte: tenho um submenu que será montado dinamicamente. O sistema lerá numa tabela e incluirá as opções neste menu de acordo com os registros do BD. Qdo o usuário clicar numa opção desse irei gravar o código do item clicado em outra tabela. A questão é como passar este parâmetro para a função. Outra coisa: como colocar o menu com ´Checked´? Já estou construindo os itens como RadioItem, porém tenho q setar a opção checked no evento onclick...

Obrigado.


GOSTEI 0
Gleison_gomes

Gleison_gomes

05/11/2004

Se o Sender tivesse a propriedade ´name´ o problema estaria resolvido, pois saberia o código do item clicado...


GOSTEI 0
POSTAR