2014-05-07 46 views
1

使用Delphi XE5我将TMainMenu转换为TActionMainMenuBar,但我遇到了在运行时被禁用的类别中的子菜单节点问题,例如在我的'文件'类别中。大多数“文件”类别项都是从动作管理器中拖出的动作,但我也希望将其中的两个动作归入文件菜单中的子菜单节点下。使用TMainMenu我只需使用Create子菜单并编辑生成的TMenuItem标题,但是我发现TActionMainMenuBar为每个客户端项目都有上下文项目,这就是我尝试使用的。结果是布局看起来不错,但子菜单项在运行时被禁用(可能是因为它没有动作)。Delphi TActionMainenuBar - 禁用2级子菜单项

这是我在设计时看到的 - 我使用对象检查器中的“添加项目”自己创建了“批量报告”项目。

This is what I see at design time - I've created 'Batch Reporting' myself..

这是我在运行时看到,该项目被禁用。

enter image description here

这是我在Object Inspector看到我的上下文项目包括。

enter image description here

我应该对“批报告”项设置一个特殊的属性,给它一个“不采取行动”的地位?或者我是否被迫用一个“无所事事”OnExecute的行动?

+0

在Delphi XE3我甚至不能看到项目通过*结构添加*面板的*添加项目*弹出菜单项(所以完全错误的)。当我通过* Object Inspector *中的'Items'集合编辑器添加项目时,项目是可见的,并且即使没有分配操作(按预期工作)也启用了具有子项目的项目。 Delphi版本可能在这里很重要... – TLama

+0

@TLama:谢谢,我已经注意到我在使用XE5。 –

回答

2

我找到了答案 - 我正在使用子菜单的“上下文项目”,我应该使用'Items'如下所示。很混乱!

enter image description here

+0

我想知道为什么你认为*“布局看起来不错”*虽然屏幕截图中没有子菜单。 –

+1

确实!我现在发现可以通过拖放来执行子菜单编辑,但只能在您首次创建单个子项时进行。然后可以在该子项目中移动操作管理器中的操作,并在稍后删除该子项目。除了手动创建子项目之外,我还没有找到启动子菜单的方法,但我会认为必须有一种方法(就像TMainMenu一样)。 –