Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何防止窗体未激活时触发快捷方式_Delphi - Fatal编程技术网

Delphi 如何防止窗体未激活时触发快捷方式

Delphi 如何防止窗体未激活时触发快捷方式,delphi,Delphi,我在页面控件的选项卡中打开表单。这些表单可能包含带有快捷方式的操作。我希望只有当包含此表单的选项卡处于活动状态时,才会触发这些快捷方式 我试图覆盖表单的IsShortCut,但它没有被调用。表单的OnShortCut也不被调用 我希望避免在每个操作上添加代码来检查这一点 我使用的是Delphi 2010。试着在切换时将表单的启用设置为false,在切换到它的选项卡时设置为True。这将禁用表单上的所有内容,包括快捷方式。将隐藏选项卡上的操作列表的状态设置为ASSUPPED。只有“可见”选项卡上的

我在页面控件的选项卡中打开表单。这些表单可能包含带有快捷方式的操作。我希望只有当包含此表单的选项卡处于活动状态时,才会触发这些快捷方式

我试图覆盖表单的IsShortCut,但它没有被调用。表单的OnShortCut也不被调用

我希望避免在每个操作上添加代码来检查这一点


我使用的是Delphi 2010。

试着在切换时将表单的启用设置为false,在切换到它的选项卡时设置为True。这将禁用表单上的所有内容,包括快捷方式。

将隐藏选项卡上的操作列表的
状态设置为
ASSUPPED
。只有“可见”选项卡上的操作列表的状态应为“正常”。这将阻止快捷键工作。它还阻止更新这些操作,这可能对应用程序有好处,也可能没有好处。

将所有快捷方式放入操作中,并将这些操作放入每个表单的一个操作列表中。然后可以禁用当前未激活的表单的操作列表。(我不记得要设置的确切的TActionList属性或调用或激活/停用它的方法,但它在那里。)

当你说你在页面控件中有“表单”时,我想你在TPageControl中有TTabSheets?也许我们毕竟不是在谈论同一件事,因为如果一个人按照我所认为的那样做的话,TForm的OnShortCut确实会被调用……每个选项卡页都是一个表单的父级。我不确定这是否会起作用,因为如果TTabSheet上的TButton是由一个TAction控制的,那么禁用TTabSheet(以及TButton)将不会自动禁用TAction。我假设,根据描述,他正在将实际的TForm子代添加到选项卡页上。如果不是,那么我的答案可能是无效的。