我有一个菜单项,想要为它指定OnClick
事件处理程序:
miFrobGizmo.OnClick := {something};
< p >像几乎所有其他事件处理程序一样,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;