我个人认为,你所说的是对的,我也没有用过别的方法,就是建一个PopUp菜单,设置button的popupMenu为这个menu就可以!

解决方案 »

  1.   

    1:可以这样的,您可以设计期就设定:
     Button1.PopupMenu := PopupMenu1;
    2:动态
    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
      Item : Array [0..3] of TMenuItem;
      MyPopupMenu : TPopupMenu;
    begin
      MyPopupMenu := TPopupMenu.Create(Self);
      for I := 0 to 3 do
      begin
        SubPopupMenu[I] := TMenuItem.Create(Self);
        SubPopupMenu[I].OnClick := MyPopupHanedler;
        SubPopupMenu[I].Caption :='第' + IntToStr(I) + '个子菜单';
        MyPopupMenu.Items.Add(SubPopupMenu[I]);
        if I = 2 then
        begin
          SubPopupMenu[I].Enabled := False;
          SubPopupMenu[I].Visible := False;
        End;
      end;
      Button1.PopupMenu := MyPopupMenu;
    end;
      

  2.   

    只需要把button的popupmenu设置一下就可以了
      

  3.   

    楼上说得对。另外可以在OnMouseDown事件中添加PopUp菜单语句。
      

  4.   

    不同意hongliqiu(在火中) 
    如果在设计期就指定了一个可视控件的popupmenu,
    它的右键触发是系统默认的