禁用键盘快捷键(delphi)

时间:2013-02-05 03:31:14

标签: delphi shortcut shortcut-key

我在Delphi中创建了一个表单。 假设我的Form标记为speedbutton "&Add"(下划线A,作为键盘快捷键)和dbgrid(只读状态)(或其他控件)比如TButton)。

然后我将焦点更改为Dbgriddbgrid获得焦点)(或TButton)。

每次按dbgrid上的 a 键时,onClick上的speedbutton方法都会触发。

有时我需要暂时禁用它一段时间,然后我再次启用它。 如何禁用speedbutton快捷方式? 然后再如何启用它?

2 个答案:

答案 0 :(得分:4)

当您按 A 时,表单正在按下按钮,因为该按钮已表示对该键感兴趣,并且表单上没有任何其他内容正在接受击键。如果您的表单上有一个编辑框,并且它具有输入焦点,则不会触发该按钮。

你可以让一个控件表明它想要在有焦点时接收击键,但这通常在编写自定义控件时发生,你可以在这里知道新控件类在接收键盘输入时应该做什么。

如果您不想触发该按钮,可以将其禁用。另一个选项是在执行常用的点击处理代码之前,更改OnClick事件处理程序以检查其他条件(例如网格是否具有焦点)。

答案 1 :(得分:0)

您可以通过将速度按钮的标签从&Add更改为Add来禁用快捷方式。需要再次启用快捷方式时将其更改回来。

请注意,指定一个加速器字符可以启用两个快捷方式,其中一个只是以&开头的密钥,另一个是 Alt 。因此,在您的情况下,它们将是 A Alt + A 。以同样的方式,消除加速器会禁用这两个快捷方式。所以,请记住,使用这种禁用快捷方式的方法,您无法使用 A Alt + A 触发按钮

相关问题