【问题标题】:TLabel OnMouseDown event not firing in FiremonkeyTLabel OnMouseDown 事件未在 Firemonkey 中触发
【发布时间】:2015-10-15 16:27:52
【问题描述】:

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

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

可能出了什么问题?

【问题讨论】:

    标签: android ios delphi touch firemonkey


    【解决方案1】:

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

    如果我们将HitTest 设置为False,这两个鼠标点击事件将通过该控件,因此位于该控件后面的控件接收鼠标事件而不是该控件。

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-11
        • 1970-01-01
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多