![](/img/trans.png)
[英]Is there a way in Delphi to assign an anonymous method to a button event?
[英]Delphi: How to assign Click event to object's method?
我有一個菜單項,並且我正在嘗試分配其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;
你不能那樣做。 它說的是“對象的過程”,而不是“接口的過程”。 如果您直接使用一個對象,它將使您做到這一點,但是由於您沒有使用它,因此它不會認為您正在嘗試分配事件處理程序,而是解析器嘗試將您的代碼視為方法調用。 然后,它會看到您的方法調用沒有任何參數,但是該調用需要一個參數,因此它放棄並給您一條錯誤消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.