【发布时间】:2015-01-09 12:42:25
【问题描述】:
我正在开发一个 Delphi XE7 多平台应用程序并想使用一些热键/快捷方式。
TActionList、TMainMenu 和 TMenuBar 都具有分配快捷方式的属性。
我正在使用快捷方式在TTabControl 上添加新的TTabItem。该快捷方式是 Ctrl + T。
因此,如果用户按下 Ctrl + T,则会在所述 TTabControl 上添加一个新选项卡 - 正常工作。
但是,如果用户一直按住这 2 个键,也会创建多个选项卡。
只要用户一直按住这些键,就会触发快捷事件。
添加新标签只是一个示例。我正在使用多个我只想触发一次的快捷方式。
有没有办法只触发一次快捷事件?
我尝试了计时器/等待特定的时间。但如果用户想要快速执行 2 个热键,这会导致问题。
感谢阅读,感谢所有帮助。
【问题讨论】:
-
它不仅仅与 Firemonkey 有关。这是 VCL 应用程序中的默认行为。也。一直是
asked here,但您将无法使用已接受的 FMX 解决方案。 -
我认为除了使用计时器之外没有其他解决方案,因为热键不会检测何时按下键,但会定期检查是否在特定时间按下了某些键组合。如果是事件被触发。
-
这似乎不是一个值得花时间解决的问题。您的客户不会很快就明白这一点并停止长时间按住按键吗?这是任何其他软件供应商已解决的问题吗?如果不是,那你为什么要这样做?
-
@RobKennedy 我没有任何客户,因为这是我正在从事的个人项目(我是学生)。我出于好奇问了这个问题。但我想你是对的。如果它没有坏,请不要修复它。
-
您可以使用一个标志来禁用多重射击。只要启用它就可以完成工作。在处理完动作后设置这个禁用标志并清除右键事件。
标签: delphi firemonkey hotkeys shortcuts