【发布时间】:2010-05-13 19:16:36
【问题描述】:
我有一个菜单项,我正在尝试分配它的 OnClick 事件处理程序:
miFrobGizmo.OnClick := {something};
OnClick 事件处理程序属性与几乎所有其他事件处理程序一样,被定义为 TNotifyEvent 方法类型:
property OnClick: TNotifyEvent
TNotifyEvent 在哪里:
TNotifyEvent = procedure(Sender: TObject) of object;
我有一个对象,其方法与TNotifyEvent 签名匹配:
TAnimal = class(TObject)
public
procedure Frob(Sender: TObject);
end;
所以我认为我应该能够采用对象的方法并将其分配给 click 事件处理程序:
var
Animal: TAnimal;
miFrobGizmo.OnClick := Animal.Frob;
除非我得到错误:
[Error]File.pas(1234): Not enough actual parameters
也许我脑子有屁,但我认为我应该能够做到这一点。
我没有提到的一个细节是,我的具有匹配方法的对象正在通过接口公开该方法:
IAnimal = interface
procedure Frob(Sender: TObject);
end;
TAnimal = class(TInterfacedObject, IAnimal)
public
procedure Frob(Sender: TObject);
end;
var
Animal: IAnimal;
miFrobGizmo.OnClick := Animal.Frob;
跟进问题
【问题讨论】:
标签: delphi events event-handling interface