Delphi 如何防止窗体未激活时触发快捷方式
我在页面控件的选项卡中打开表单。这些表单可能包含带有快捷方式的操作。我希望只有当包含此表单的选项卡处于活动状态时,才会触发这些快捷方式 我试图覆盖表单的IsShortCut,但它没有被调用。表单的OnShortCut也不被调用 我希望避免在每个操作上添加代码来检查这一点Delphi 如何防止窗体未激活时触发快捷方式,delphi,Delphi,我在页面控件的选项卡中打开表单。这些表单可能包含带有快捷方式的操作。我希望只有当包含此表单的选项卡处于活动状态时,才会触发这些快捷方式 我试图覆盖表单的IsShortCut,但它没有被调用。表单的OnShortCut也不被调用 我希望避免在每个操作上添加代码来检查这一点 我使用的是Delphi 2010。试着在切换时将表单的启用设置为false,在切换到它的选项卡时设置为True。这将禁用表单上的所有内容,包括快捷方式。将隐藏选项卡上的操作列表的状态设置为ASSUPPED。只有“可见”选项卡上的
我使用的是Delphi 2010。试着在切换时将表单的启用设置为false,在切换到它的选项卡时设置为True。这将禁用表单上的所有内容,包括快捷方式。将隐藏选项卡上的操作列表的
状态设置为ASSUPPED
。只有“可见”选项卡上的操作列表的状态应为“正常”。这将阻止快捷键工作。它还阻止更新这些操作,这可能对应用程序有好处,也可能没有好处。将所有快捷方式放入操作中,并将这些操作放入每个表单的一个操作列表中。然后可以禁用当前未激活的表单的操作列表。(我不记得要设置的确切的TActionList属性或调用或激活/停用它的方法,但它在那里。)当你说你在页面控件中有“表单”时,我想你在TPageControl中有TTabSheets?也许我们毕竟不是在谈论同一件事,因为如果一个人按照我所认为的那样做的话,TForm的OnShortCut确实会被调用……每个选项卡页都是一个表单的父级。我不确定这是否会起作用,因为如果TTabSheet上的TButton是由一个TAction控制的,那么禁用TTabSheet(以及TButton)将不会自动禁用TAction。我假设,根据描述,他正在将实际的TForm子代添加到选项卡页上。如果不是,那么我的答案可能是无效的。