我想知道是否有一种简单的方法来判断哪个输入设备触发了特定的GUI事件。
例如:TButton.OnClick
事件被触发。用户是通过键盘按下(快捷键,默认按钮的Enter
键,焦点按钮的space
键等)触发它还是通过鼠标单击触发的?有什么简单的方法可以告诉吗?
我想知道的原因是,当用户使用鼠标来启动也可以使用键盘完成的操作时,我可以在一些应用程序中实现键盘使用提示。我们位于车间的系统处于多尘/肮脏的环境中,鼠标往往无法很好地支撑它们。而且,在很多情况下,根本没有足够的空间来使用鼠标。 (不,没有数字小键盘的键盘不是解决方案。它们过于依赖。)
但是,由于我们的应用程序在Windows中运行,因此用户倾向于像在家中一样使用鼠标简单地使用这些程序。这没有什么特别的错误,但是我们一直在努力优化输入工作流程以使其对键盘友好。如果能以一种低影响的方式向我们的用户表明,有一种方法可以让他们无需握住鼠标就能完成他们正在做的事情,那就太好了。
最佳答案
在OnClick
中无法分辨。但是,您也可以将事件附加到控件上,该控件将在鼠标滑过该控件时触发,这可能更适合您尝试执行的操作。看一下OnMouseEnter
和OnMouseLeave
事件。另外,如果您确实希望单击鼠标时发生特定的事情,可以将其附加到OnMouseUp
。
关于delphi - 如何分辨是什么设备触发了Delphi中的特定事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037859/