delphi - 如何分辨是什么设备触发了Delphi中的特定事件?

标签 delphi input-devices

我想知道是否有一种简单的方法来判断哪个输入设备触发了特定的GUI事件。

例如:TButton.OnClick事件被触发。用户是通过键盘按下(快捷键,默认按钮的Enter键,焦点按钮的space键等)触发它还是通过鼠标单击触发的?有什么简单的方法可以告诉吗?

我想知道的原因是,当用户使用鼠标来启动也可以使用键盘完成的操作时,我可以在一些应用程序中实现键盘使用提示。我们位于车间的系统处于多尘/肮脏的环境中,鼠标往往无法很好地支撑它们。而且,在很多情况下,根本没有足够的空间来使用鼠标。 (不,没有数字小键盘的键盘不是解决方案。它们过于依赖。)

但是,由于我们的应用程序在Windows中运行,因此用户倾向于像在家中一样使用鼠标简单地使用这些程序。这没有什么特别的错误,但是我们一直在努力优化输入工作流程以使其对键盘友好。如果能以一种低影响的方式向我们的用户表明,有一种方法可以让他们无需握住鼠标就能完成他们正在做的事情,那就太好了。

最佳答案

OnClick中无法分辨。但是,您也可以将事件附加到控件上,该控件将在鼠标滑过该控件时触发,这可能更适合您尝试执行的操作。看一下OnMouseEnterOnMouseLeave事件。另外,如果您确实希望单击鼠标时发生特定的事情,可以将其附加到OnMouseUp

关于delphi - 如何分辨是什么设备触发了Delphi中的特定事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037859/

相关文章:

delphi - 在Delphi中读取大文件的最快方法是什么?

android - 如何使用 GPIO 将 Android 嵌入式板从挂起状态唤醒

ubuntu - SDL2 看不到操纵杆,但操作系统可以

c++ - 在 Linux 上使用 C++ 访问 Sony Playstation SixAxis Controller

delphi - 确定是否作为 VCL 表单或服务运行

delphi - 如何获取 TWinControl 的 X、Y 位置(相对于屏幕)

Delphi 2007 Indy 10 找不到 SSL 库

delphi - 如何在 Delphi XE2 dbExpress 和 Firebird 2.5 中使用 bool 值

c - stdin 在 Linux 中是否被视为字符设备?

c# - 如何在 C# - Windows 窗体中从 ePad 捕获签名?