[FMX]开年第二弹:修改 FMX.Forms.pas 避免在控件中滑动被识别为点击

通过修改 FMX.Controls 单元,我们在编辑控制上滑动时,输入法自动弹出的问题算是比较完美的解决了(参考:[FMX]开年第一弹:修改 FMX.Controls 避免按住编辑框移动时弹出输入法的问题),但 FMX 依然存在着滑动时触发OnClick事件的问题。

现在我们要做的就是解决这一问题:

1、找到 FMX.Forms.pas,将其复制到工程的当前目录下。

2、在 implementation 后面,加入下面的代码,以记录鼠标按下的位置。

var
  GlobalMouseFirstDownPos:TPointF;

3、找到 TCommonCustomForm.MouseDown 的实现函数,在 FDownPos := FMousePos; 一句后面,加上下面的代码:

GlobalMouseFirstDownPos:=FMousePos;

4、找到 TCommonCustomForm.MouseUp 的实现函数,在 if FCaptured <> nil then 前面,加上下面的代码:

if DoClick then
      begin
      DoClick:=GlobalMouseFirstDownPos.Distance(FMousePos)<=10;
      GlobalMouseFirstDownPos:=FMousePos;
      end;

5、重新编译程序,问题解决。

分享到: