3

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

然后我将焦点更改为Dbgrid( dbgridgot a focus) (或 to TButton)。

每次我按上的a键,触发器上dbgridonClick方法。speedbutton

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

4

2 回答 2

4

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

您可以让控件表明它希望在获得焦点时接收击键,但这通常发生在编写自定义控件时,您可以了解新控件类在接收键盘输入时应该做什么。

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

于 2013-02-05T04:36:10.660 回答
0

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

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

于 2014-04-23T18:37:40.463 回答