- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有主表单的应用程序。在此表单中,我放置了三个 TActionMainMenuBar,因为应用程序本质上以三种不同的模式运行。
菜单栏都是由主窗体上的 TActionManager 中存储(代理)的操作构成的。 ActionManager 实际上引用了各种其他形式的 Action 列表。
然后,菜单栏将显示+启用和隐藏+禁用,以便一次只有一个可见。这种方法效果很好,如果单击或使用 ALT 和箭头键或标题中带下划线的字符进行导航,操作就会运行。
但是问题是这些操作似乎不响应任何快捷键按下。
有谁知道什么可能导致操作不触发?
如果需要,我很乐意提供更多信息,我正在 WinXP SP3 中的 C++Builder 2007 RAD Studio 中进行编程。
感谢任何阅读本文,甚至阅读本文并提出解决方案的人!
彼得MJ
更新:我没有指出不同菜单中的快捷方式重叠,因为相同的快捷方式在不同的菜单中用于不同的操作,但所有快捷方式在各自的菜单中都是唯一的。
此后,我还使用两个 TActionMainMenuBars 简化了测试应用程序中的问题,并且所有操作共享一个操作管理器。在本例中,我有两个具有相同快捷方式的操作。它们被放置在不同的菜单上。然后一次启用一个菜单。在这种情况下,快捷键确实可以工作,但是当使用通用快捷键时,仅会触发第一个菜单中的操作,即使在禁用保持菜单时也是如此。
这比我的实际问题稍好一些,因为某些操作确实会触发,但突出显示这些操作未正确触发。有人没有解决办法吗?
最佳答案
启用/禁用或显示/隐藏 ActioneMenuBar 对菜单栏上的操作没有影响。如果您想让某些操作在特定上下文/情况下不可用,则需要实现该操作本身或它所属的操作列表或操作管理器的“OnUpdate”事件。
例如,使用操作管理器的以下 OnUpdate 事件,您可以使用 TCheckBox 来决定当前激活两个操作中的哪一个。
if CheckBox1.Checked then
begin
Action1.Enabled:= False;
Action2.Enabled:= True;
end
else
begin
Action1.Enabled:= True;
Action2.Enabled:= False;
end;
想象一下,两个操作都分配了快捷键“Ctrl+A”,这意味着在未选中 CheckBox1 时按 Ctrl+A 只会激活 Action1。
但是,仍然存在一个问题。一旦 VCL 在当前表单的 Action 管理器或 Action 列表中找到具有该快捷方式的 Action ,VCL 将停止寻找具有该快捷方式的 Action ,即使找到的 Action 未启用。
要解决此问题,您可以使用 OnUpdate 事件动态设置和重置操作的 ShortCut 属性,如下所示:
if CheckBox1.Checked then
begin
Action1.Enabled:= False;
Action1.ShortCut:= scNone;
Action2.Enabled:= True;
Action2.ShortCut:= ShortCut(ord('A'), [ssCtrl]);
end
else
begin
Action2.Enabled:= False;
Action2.ShortCut:= scNone;
Action1.Enabled:= True;
Action1.ShortCut:= ShortCut(ord('A'), [ssCtrl]);
end;
使用此代码,如果选中了 CheckBox1,则按 Ctrl+A 将激活 Action2;如果未选中 CheckBox1,则将激活 Action1。您不需要显式调用操作列表或操作管理器的 OnUpdate 事件。当应用程序空闲并等待用户输入时,会定期触发该事件。
关于delphi - 如何获得在单个表单中使用多个 TActionMainMenuBar 对象的快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268543/
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!