我正在使用ActionManager和ActionMenuBar创建菜单。我想在单击顶级菜单节点时从菜单中添加和减去项目,但我找不到干净的方法来执行此操作。例如,我想创建一个顶级菜单“Windows”,它托管与每个无模式窗体相对应的项目。我可以通过在ActionManager中创建一个名为Windows的类别并将“Windows”拖动到菜单栏来创建顶级“Windows”菜单。单击“Windows”时,我希望使用与应用程序的无模式窗体相对应的TActionClientItems填充Items属性。我确实知道在运行时动态添加动作客户端的机制(例如,在窗体的oncreate事件中)但我找不到在单击类别(在本例中为“Windows”)时触发的动作。
我可以通过在隐藏或显示表单时更新菜单来解决这个问题,但与按需更新菜单相比,这似乎是不优雅的。我尝试将动作附加到“Windows”actionclientitem,但动作的onexecute不会触发(显然是因为它是一个类别)。
可以通过以下步骤演示调用onexecute处理程序的失败: