Displays the pop-up menu onscreen.procedure Popup(X, Y: Integer); virtual;DescriptionCall Popup to bring up the pop-up menu. The menu appears at the screen coordinates indicated by the values (in pixels) of X and Y. procedure TForm1.FormCreate(Sender: TObject);
begin
  PopupMenu1.AutoPopup := False;
end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin
  PopupMenu1.Popup(X, Y);
end;你那样做仅仅是弹出popupmenu,要调用事件的话
procedure TForm1.Button4Click(Sender: TObject);
begin
  N1Click(Sender);
end;

解决方案 »

  1.   

    我是在procedure TForm1.Button4Click(Sender: TObject);事件中弹出弹出菜单;
    我并不是要在button4click事件中激活点击第一个menuitem。
    我是想在procedure TForm1.N1Click(Sender: TObject); 事件中激活点击第一个menuitem。
    难道procedure TForm1.N1Click(Sender: TObject);还需要在其它事件中才能激活吗?
      

  2.   

    可以起作用的,你加了新的菜单项没有?,这个单击事件是单个菜单项的,你在procedure TForm1.N1Click(Sender: TObject)的第一行设个断点就会发现他可以起作用。
    源码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Menus, StdCtrls;type
      TForm1 = class(TForm)
        Button4: TButton;
        PopupMenu1: TPopupMenu;
        N331: TMenuItem;
        procedure N331Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.N331Click(Sender: TObject);
    begin
    showmessage('dd');
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
    form1.PopupMenu1.Popup(form1.Left+form1.Button4.Left,form1.Top+form1.Button4.Top+form1.Button4.ClientHeight+20);
    end;end.
      

  3.   

    1、第一个事件太复杂,你不如这样写:
        
    PopupMenu1.Popup(Mouse.CursorPos.x,Mouse.CursorPos.y);2、单击左键,菜单弹出来了记住autopop的值是false;3、第二个事件肯定执行了,但你的代码到底是否正确
      请设断点调试