运行时分配OnTAP事件Delphi Seattle

时间:2015-12-07 17:06:29

标签: delphi events runtime delphi-10-seattle

我正在使用 Firemonkey 和 我想在运行时将 OnTap事件分配给一个对象。

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

顶部的标题:

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不兼容的类型:'参数列表不同'

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

顶部的标题:

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;

我的知识中存在需要填补的空白。

1 个答案:

答案 0 :(得分:0)

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

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

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

如果在设计时双击Object Inspector中的任何UI控件的OnTap事件,您将看到IDE生成的OnTap事件处理程序不包含{{1属性。事实上,[Ref]的声明中没有[Ref]属性,这一点得到进一步强制执行:

FMX.Types.TTapEvent