组件的 OnClick 事件触发速度

Posted

技术标签:

【中文标题】组件的 OnClick 事件触发速度【英文标题】:OnClick event firing speed for components 【发布时间】:2010-12-14 20:43:13 【问题描述】:

我在一个用作 Plus 和 Minus 的表单上使用了两个 TButton 组件。当点击它们时,它们会添加或减去一个整数,然后显示在一个 TLabel 上。

这在我单击的速度将触发 OnClick 事件时没有错误的情况下按需要运行。

我已将按钮替换为PNGButton 组件,以便让它们看起来更漂亮。一切仍然像以前一样工作,只是每次单击组件时似乎都没有触发 OnClick 事件。我也用一个简单的 TImage 组件对此进行了测试,结果是一样的。

如果我点击非常缓慢,它每次都会触发,但如果我以常规速度点击,它似乎只会触发每第二次点击。

如何确保每次都触发 OnClick 事件?

【问题讨论】:

【参考方案1】:

不要使用 OnClick 事件,而是使用 OnMouseUp 事件:

procedure TForm.btnMinusMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Self.NumSelected > 0 then begin
    Self.NumSelected := Self.NumSelected - 1;
    Self.UpdateLabel;
  end;
end;

【讨论】:

也许一些解释可能会有所帮助。我怀疑 OnClick 没有注册,因为它被认为是双击。鼠标向上不依赖于点击解释,所以有效。

以上是关于组件的 OnClick 事件触发速度的主要内容,如果未能解决你的问题,请参考以下文章

Material UI List onClick 在嵌套列表上触发点击事件

Delphi 2009:传递组件名称 onclick 事件然后设置属性

用JS添加的DIV,无法触发onclick事件 请求帮助

如何让一个按钮自动触发,自动执行onclick鼠标单击事件. 默认已点击.

点击同时触发两个onclick事件[重复]

如何让一个按钮自动触发,自动执行onclick鼠标单击事件. 默认已点击.