标准的DELPHI事件委托是这样实现的:
定义一个事件类型
type TNotifyEvent = procedure (Sender: TObject) of object;
在类里声明一个事件类型的数据成员:
TMyObject = class(TObject)
private
FMyEvent : TNotifyEvent;
public
Procedure D;
Property MyEvent : TNotifyEvent read FMyEvent write FMyEvent;
end;
procedure TMyObject.D;
begin
if Assigned( FMyEvent ) then
FMyEvent( Self );
end;
只要将不同的类成员函数(可以是其它类,但必须是类成员函数,不可以是全局函数)A、B、C设置给MyEvent即可让D按情况调用。
不过A、B、C的定义必须附合事件类型的定义。
如果要用全局函数,则必须定义不同的事件类型(这种情况实际为函数指针)
type TMyGlobalEvent = Procedure;
同样在D里调用时也只要用
MyEvent;
即可,不用SELF参数