看帮助,有例子。
procedure TForm.PopupHandler;
begin
//chuli
end; NewItem := TMenuItem.Create(PopupMenu1);
NewItem.Caption := '名字';
NewItem.OnClick := PopUpHandler;//自己定义的处理过程指针。
PopupMenu1.Items.Insert(0, NewItem);
procedure TForm.PopupHandler;
begin
//chuli
end; NewItem := TMenuItem.Create(PopupMenu1);
NewItem.Caption := '名字';
NewItem.OnClick := PopUpHandler;//自己定义的处理过程指针。
PopupMenu1.Items.Insert(0, NewItem);
解决方案 »
- 请问如何知道电影文件的播放原始尺寸??
- 当对象响应事件时如何获得对象
- 大侠们执教:哪里有真正免费的界面控件,小弟急需!非常感谢!
- 高手请帮助:读取一个xml文件时遇到的问题@@@@@@@@@@@@
- 如何用richedit显示rtf文件内容(复杂的公式),急!!!分不够可以补
- Delphi2005已经能支持Unicode字符串,但好像有问题?
- 请问stringgrid怎么加入数据的?(我的数据是Paradox表)
- 明天是我到深圳一年的日子了,不算快乐,但是值得纪念的日子。
- delphi 6 下载?
- 有谁有raize 2.52的serial number
- 请教高手:Delphi6如何使用Ado的Shape命令?
- 关于query控件
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.
http://www.csdn.net/expert/TopicView.asp?id=67005
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中