Opção do menu

Delphi

04/05/2004

Boa tarde a todos.

Gostaria de saber se tem como eu ´capturar´ a opção clicada no menu, deixa eu explicar melhor:
O meu sistema cria em run time um PopUp Menu, só que eu preciso saber em que opção o usuário clçicou pois para cada opção é um evento diferente.

Grato


Angelo

Angelo

Curtidas 0

Respostas

Tinorj

Tinorj

04/05/2004

 {...}
procedure PMRTClick(Sender: TObject);
{..}

procedure PMRTClick(Sender: TObject);
begin
  if (Sender = miOp1) then
    ShowMessage(´Opção 1´)
end;

procedure CriaPopupMenu;
begin
  //Rotinas de criação do popupmenu

  //Após a criação do seu TPopupMenu, informar a procedure para   trabamento do evento On Click.

PopupMenuRunTime.OnClick := PMRT;
end;


Espero ter ajudado.


GOSTEI 0
Angelo

Angelo

04/05/2004

Cara, desculpa a ignorância, tou começando, mas o que significa miop1?

Valeu


GOSTEI 0
Angelo

Angelo

04/05/2004

Boa noite Tino, antes de tudo agradeço a ajuda, mas ainda não consegui chegar ao meu objetivo.
O seguinte, eu tenho uma tabela com usuários, que conforme a situação do sistema estão ´On-Line´, ou ´Off-Line´, bem, esse popup menu é criado a partir dos usuários que estâo on-line, ou seja, eu tenho uma query que armazena todos os usuários on-line e com um loop eu incremento no menu o nome deles. Bem até aí tudo legal, o problema surge quando clico no menu com o nome do determinado usuário, eu tenho que saber exatamente qual o susuário clicado, pois aí pelo nome do cidadão, eu faço uma consulta na tabela pedo o ip da máquina que ele está trabalhando e mando uma mensagem para ele.
Agradeceria muito se vc pudesse me ajudar nessa.

Valeu colega!


GOSTEI 0
Tinorj

Tinorj

04/05/2004

Veja o Exemplo abaixo:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBClient, StdCtrls,
  Buttons, Menus;

type
  TForm1 = class(TForm)
    ClientDataSet1: TClientDataSet;
    ClientDataSet1Usuario: TStringField;
    ClientDataSet1OnLine: TBooleanField;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    BitBtn1: TBitBtn;
    PopupMenu1: TPopupMenu;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure PopupMenu1Popup(Sender: TObject);
    procedure PopupMenu1PopupClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var i: integer;
begin
  with ClientDataSet1 do
    for i := 1 to 10 do begin
      append;
      ClientDataSet1Usuario.AsString := ´usuario´ + inttostr(i);
      ClientDataSet1OnLine.AsBoolean := ((i mod 3) = 0);
      Post;
    end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  ClientDataSet1.CreateDataSet;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ClientDataSet1.EmptyDataSet;
end;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
  menuppp: tmenuitem;
begin
    with PopupMenu1 do begin
    Items.Clear;

    if not ClientDataSet1.Active then
      exit;

    ClientDataSet1.First;

    while not ClientDataSet1.eof do begin
      if ClientDataSet1OnLine.AsBoolean then begin
        menuppp := TMenuItem.Create(nil);
        menuppp.Caption := ClientDataSet1Usuario.AsString;
        menuppp.Name := ´mi´ + ClientDataSet1Usuario.AsString;
        menuppp.OnClick := PopupMenu1PopupClick;
        Items.Add(Menuppp);
        menu.Free;
        menu := nil;
      end;

      ClientDataSet1.Next;
    end;
   end;
end;

procedure TForm1.PopupMenu1PopupClick(Sender: TObject);
begin
  MessageBeep(1);
  ShowMessage((Sender AS TMenuItem).Name);
  //Aqui você vai colocar sua pesquisa
end;

end.


Espero ter ajudado


GOSTEI 0
POSTAR