在运行期自动生成的快捷菜单中,如何定义各个菜单项的单击事件?
如:在运行期生成的快捷菜单中有三项,分别显示'a'、'b'、'c',
  那么,如何定义单击事件,并得到所单击菜单项的索引号?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     tmp:tmenuitem;
    begin
     tmp := tmenuitem.create(self);
     MainMenu1.Items.Add(tmp);
     tmp.Caption :='1';
     tmp.OnClick  := Button2.OnClick;end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     showmessage('');
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     tmp:tmenuitem;
    begin
     tmp := tmenuitem.create(self);
     PopupMenu1.Items.Add(tmp);
     tmp.Caption :='1';
     tmp.OnClick  := button2.OnClick ;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     Showmessage(INttoStr(PopupMenu1.Items.IndexOf (Tmenuitem(Sender))));end;
      

  3.   

    谢谢楼上!
    这个我也写了,但如何得到当前选项呢?
    如问题的例子:
    单击'a'项 则showmessage('0');
    单击'b'项 则showmessage('1');
    单击'c'项 则showmessage('2');
    继续请教。
      

  4.   

    procedure TForm1.FormCreate(Sender: TObject);
    Var
      dd:TPopupMenu;
      a:TMenuItem ;
    begin
       dd:=TPopupMenu.Create(self);
       a:=TMenuItem.Create(self);
       a.Caption:='aa'    ;
       dd.Items.Add(a);
       form1.PopupMenu:=dd;
       a.OnClick:=button1click;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      showmessage('ok!');
    end;