我在Delphi中创建了一个表单。
假设我的Form
标记为speedbutton
"&Add"
(下划线A,作为键盘快捷键)和dbgrid
(只读状态)(或其他控件)比如TButton
)。
然后我将焦点更改为Dbgrid
(dbgrid
获得焦点)(或TButton
)。
每次按dbgrid
上的 a 键时,onClick
上的speedbutton
方法都会触发。
有时我需要暂时禁用它一段时间,然后我再次启用它。
如何禁用speedbutton
快捷方式?
然后再如何启用它?
答案 0 :(得分:4)
当您按 A 时,表单正在按下按钮,因为该按钮已表示对该键感兴趣,并且表单上没有任何其他内容正在接受击键。如果您的表单上有一个编辑框,并且它具有输入焦点,则不会触发该按钮。
你可以让一个控件表明它想要在有焦点时接收击键,但这通常在编写自定义控件时发生,你可以在这里知道新控件类在接收键盘输入时应该做什么。
如果您不想触发该按钮,可以将其禁用。另一个选项是在执行常用的点击处理代码之前,更改OnClick事件处理程序以检查其他条件(例如网格是否具有焦点)。
答案 1 :(得分:0)
您可以通过将速度按钮的标签从&Add
更改为Add
来禁用快捷方式。需要再次启用快捷方式时将其更改回来。
请注意,指定一个加速器字符可以启用两个快捷方式,其中一个只是以&
开头的密钥,另一个是 Alt 。因此,在您的情况下,它们将是 A 和 Alt + A 。以同样的方式,消除加速器会禁用这两个快捷方式。所以,请记住,使用这种禁用快捷方式的方法,您无法使用 A 或 Alt + A 触发按钮