看帮助,有例子。
procedure TForm.PopupHandler;
begin
  //chuli 
end;    NewItem := TMenuItem.Create(PopupMenu1);
    NewItem.Caption := '名字';
    NewItem.OnClick := PopUpHandler;//自己定义的处理过程指针。
    PopupMenu1.Items.Insert(0, NewItem);  
 

解决方案 »

  1.   

    NewItem.OnClick := PopUpHandler;//自己定义的处理过程指针。 我就需要的就是 等号后面的怎么编啊?怎么写自己的事件?
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Buttons, StdCtrls, ComCtrls;type
      TmyEvent = procedure(Sender: TObject) of Object;//这是自定义的事件  TuserButton = class(TButton)
      private
        FOnMyEvent: TmyEvent;
        procedure DoMyEvent(Sender: TObject);
      protected
        procedure CMMouseEnter(var AMessage: TMessage); message CM_MOUSEENTER;
        procedure CMMouseLeave(var AMessage: TMessage); message CM_MOUSELEAVE;
      public
        constructor Create(AOwner: TComponent); override;
      published
        property OnMyEvent: TmyEvent read FOnMyEvent write FOnMyEvent;
      end;  TForm1 = class(TForm)    procedure OnMyEvent(Sender: TObject);
        procedure FormCreate(Sender: TObject);  private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      userButton1: TuserButton;
      
    implementation{$R *.DFM}{ TuserButton }
    procedure TuserButton.DoMyEvent(Sender: TObject);
    begin
      //如果你在OnMyEvent事件中写入代码,则Assigned(FOnMyEvent)会为TRUE;你的事件便发生
      if Assigned(FOnMyEvent) then
        FOnMyEvent(self);
    end;//事件是由消息过程调用启动的,一般,一个事件总是和一个消息关联;
    procedure TuserButton.CMMouseEnter(var AMessage: TMessage);
    begin
      DoMyEvent(self);
    end;procedure TuserButton.CMMouseLeave(var AMessage: TMessage);
    begin
      DoMyEvent(self);
    end;constructor TuserButton.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
    end;{ TForm1 }//自定义的MyEvent事件的实现
    procedure TForm1.OnMyEvent(Sender: TObject);
    begin
      //在设计时把Form1的caption属性设为'Form1'
      if (Form1.Caption = 'Form1') then
        Form1.Caption := 'My Event occurred'
      else if (Form1.Caption = 'My Event occurred') then
        Form1.Caption := 'Form1';end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      userButton1 := TuserButton.Create(self);
      userButton1.Parent := self;
      userButton1.Caption := 'My Event';
      userButton1.Left := 20;
      userButton1.Top := 50;
      userButton1.Width := 80;
      userButton1.Enabled := TRUE;
      userButton1.OnMyEvent := Form1.OnMyEvent;
    end;end.
      

  3.   

    这个问题你到处问哦
    http://www.csdn.net/expert/TopicView.asp?id=67005
      

  4.   

    首先定义一个自定义事件
       TMyMenuEvent = procedure OnMyMenuEvent(Sender : TObject);然后声明一个私有函数变量:
       FOnMyMenuEvent : TMyMenuEvent;
    和 procedure DoMyMenuEvent(Sender : TObject);实现 
    procedure DoMyMenuEvent(Sender : TObject);
    begin
      if Assigned(FOnMyMenuEvent) then
         FOnMyMenuEvent(self);
    end;
    在你想要触发的条件满足时调用
       DoMyMenuEvent(Self);最后公布事件属性:
       property OnMyMenuEvent: TMyMenuEvent read FOnMyMenuEvent write OnMyMenuEvent;
      
    以上方法不光可以用在VCL中,还可以用在Form中