新增加的菜单项:
MenuItem := TMenuItem.Create(PopupMenu);
MenuItem.OnClick := MenuItemClick; //需要处理的事件名

解决方案 »

  1.   

    var
    MypopUpitems: array[0..3] of TMenuitem;procedure TForm1......(Sender: TObject);
    begin
     MypopUpitems[1] := TMenuItem.Create(Self);
     MypopUpitems[1].Caption := 'test';
     PopupMenu1.Items.Add(mypopupitems[1]);
     MypopUpitems[1].OnClick:=MyPopupHandler;
    end; procedure TForm1.MyPopupHandler(Sender: Tobject);
    begin
       ....处理
     end;
      

  2.   

    你可以将要添加的个数读出,再循环:
    var
    MypopUpitems: array of TMenuitem;procedure TForm1......(Sender: TObject);
    begin
     setlengh(Mypopupitems, N//要加的个数);
     for i := 0 to N do
     begin
       MypopUpitems[i] := TMenuItem.Create(Self);
       MypopUpitems[i].Caption := ....;
       PopupMenu1.Items.Add(mypopupitems[1]);
       MypopUpitems[i].OnClick:=MyPopupHandler;
     end
    end; 
      

  3.   

    procedure TForm1.MyPopupHandler(Sender : Tobject);
    begin
      if  MypopUpitems[i].checked then
         MypopUpitems[i].checked:=false
      else
         MypopUpitems[i].checked:=true;
    end;
    如何知道我所单击menuitem的i的值
      

  4.   

    procedure TForm1.MyPopupHandler(Sender : Tobject);
    begin
      if  MypopUpitems.checked then
         MypopUpitems.checked:=false
      else
         MypopUpitems.checked:=true;
    end;
      

  5.   

    其实就是生成动态菜单。csdn上有好多例子,我就不copy了。
      

  6.   

    你可以试一下如下
    (sender as tmenuitem).checked
      

  7.   

    var
      n:string;
    begin
    n:=(sender as tmenuitem).caption
    label1.caption:=n;
    end;