TLabel OnMouseDown 事件未在 Firemonkey 中触发

TLabel OnMouseDown event not firing in Firemonkey

我试图在用户触摸时更改 TLabel 颜色,但看起来 MouseDown 事件没有被触发。

procedure TForm_Master.tv_1Down(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
tv_1.FontColor := TAlphaColors.Dodgerblue;
end;

可能出了什么问题?

如果我们将 HitTest 设置为 True,此控件将捕获所有鼠标 OnClickOnDblClick 事件。

如果我们把HitTest设置为False,这两个鼠标点击事件都会通过这个控件,这样放置在这个控件后面的一个控件就会接收到鼠标事件,而不是这个控件。

对于大多数控件,HitTest 默认为 True。但是,对于 TLabelTPathLabel 则不是这样,其中 HitTest 默认为 False;这两个控件不会捕获 OnClickOnDblClick 事件,除非您将 HitTest 设置为 True

http://docwiki.embarcadero.com/Libraries/XE8/en/FMX.Controls.TControl.HitTest

不幸的是,Machado 的解决方案在使用样式和以编程方式创建的标签时似乎不起作用。

在这种情况下,更容易创建看起来像标签的按钮样式(例如在样书中将其背景不透明度设置为 0),然后使用样式化的按钮而不是标签。

在您的情况下,您通过设置样式按钮的 OnClick 属性 触发的 TNotifyEvent 事件将根据需要更改任何对象的样式。使用样式有助于保持一致的外观。例如。将 TStyleBook 置于空表单中,并从该基本表单继承应用程序的其他来源。