OnTAP 事件的运行时分配 Delphi 西雅图

Runtime allocation of OnTAP event Delphi Seattle

我正在使用 Firemonkey 并且 我想在运行时将 OnTap 事件分配给 object。

我尝试的代码与我用于 OnClick 事件的代码基本相同:

Header 在顶部:

procedure txtHostClick(Sender: TObject);

程序:

procedure TMyForm.txtHostClick(Sender: TObject);
begin
   //do stuff
end;

分配给事件处理程序:

hotspot :=  Tmemo.Create(Highlight_Scrollbox);
hotspot.OnClick := txtHostClick;

所以我尝试将相同的逻辑应用于 OnTap 事件,但它给出了以下错误:

[DCC 错误]s3.pas(4338):E2009 不兼容的类型:'Parameter lists differ'

下面是我尝试过的代码示例:

Header 在顶部:

procedure txtOnTAPEvent(Sender: TObject; const [Ref] Point: TPointF);

程序:

procedure TMyForm.txtOnTAPEvent(Sender: TObject; const [Ref] Point: TPointF);
begin
   //do stuff
end;

分配给事件处理程序:

hotspot :=  Tmemo.Create(Highlight_Scrollbox);
hotspot.OnTap := txtOnTAPEvent;

我的知识有缺口需要填补。

尝试从 Point 参数中删除 [Ref] 属性:

procedure txtOnTAPEvent(Sender: TObject; const Point: TPointF);

procedure TMyForm.txtOnTAPEvent(Sender: TObject; const Point: TPointF);
begin
    //do stuff
end;

如果您在设计时双击对象检查器中任何 UI 控件的 OnTap 事件,您将看到 IDE 生成一个 OnTap不包含 [Ref] 属性的事件处理程序。 FMX.Types.TTapEvent 的声明中没有 [Ref] 属性以开头:

TTapEvent = procedure(Sender: TObject; const Point: TPointF) of object;