如何获取TSpeedButton的双击事件?

4

TspeedButton的双击事件在我双击它时没有触发。我需要OnClick事件和OnDblClick事件有不同的功能。

谢谢, Rakesh。

1个回答

5
简短回答是,除非GroupIndex属性为非零值,否则Delphi的双击事件不会被使用 - 根据下面的代码,这意味着FDown可能为true。如果GroupIndex = 0,则FDown将不为true。该事件的源代码如下:
procedure TSpeedButton.WMLButtonDblClk(var Message: TWMLButtonDblClk);
begin
  inherited;
  if FDown then DblClick;
end;

如果你想要尝试一下,可以把这个代码中的 "if FDown" 删掉,重新编译 VCL 库,这样应该就能正常运行了。
-Don

1
不必重新编译VCL,我通常会将TSpeedButton的代码复制到我的单元中,并将其重命名,并在我的应用程序中使用一个TXYZSpeedButton替换TSpeedButton,其中XYZ是公司组件前缀。我不会分发这样的源代码,因此这种技术在开源应用程序中无法使用,但在闭源商业应用程序中可以使用。我想要一个更好的热图像支持(鼠标悬停时图像更改)的TSpeedButton,如果不从buttons.pas基本上克隆和修改TSpeedButton源,这是不可能做到的。 - Warren P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接