比如这个popupmenu中有"cut, copy, paste"3个选项, 它们都是动态创建的, 那么执行OnClick后,怎样知道选的是哪个item?

解决方案 »

  1.   

    给每个Item设定不同的Tag值,然后在公用的点击事件中判断Tag。
      

  2.   

    那要获得一个item的tag值,还得知道这是哪个item才行, 可现在就要判断是哪个item,那怎么办呢?
      

  3.   

    设置TAg 值 然后所有的事件都 指到case TComponent(Sender).Tag of
         0:
         begin
         end;
    ......
    ...
    ....
    ....
    end;
      

  4.   

    不用这么麻烦,直接在popupmenu中item每个autocheck设置为true,每次只要遍历一下就知道了
      

  5.   

    晕。非要说的很详细才行吗?
    在Form类中添加一行:
      private
        procedure MyMenuItemClick(Sender: TObject);然后:
    procedure TForm1.Button1Click(Sender: TObject);
    var
        miCut, miCopy, miPaste: TMenuItem;
    begin
        miCut := TMenuItem.Create(PopupMenu1);
        miCut.Caption := '&Cut';
        miCut.Tag := 1;
        miCut.OnClick := MyMenuItemClick;
        PopupMenu1.Items.Add(miCut);    miCopy := TMenuItem.Create(PopupMenu1);
        miCopy.Caption := '&Copy';
        miCopy.Tag := 2;
        miCopy.OnClick := MyMenuItemClick;
        PopupMenu1.Items.Add(miCopy);    miPaste := TMenuItem.Create(PopupMenu1);
        miPaste.Caption := '&Paste';
        miPaste.Tag := 3;
        miPaste.OnClick := MyMenuItemClick;
        PopupMenu1.Items.Add(miPaste);
    end;procedure TForm1.MyMenuItemClick(Sender: TObject);
    begin
        case (Sender as TMenuItem).Tag of
        1:
            ShowMessage('Cut');
        2:
            ShowMessage('Copy');
        3:
            ShowMessage('Paste');
        end;
    end;
      

  6.   

    (Sender as TMenuItem).MenuIndex;
    就可以得到Itme的Index.***********************************
     高级群号:16497064欢迎编程高手加入.
    ***********************************