Delphi:TitleBarPanel中ActionMainMenu子菜单分栏与分隔符问题
针对你在TitleBarPanel中使用ActionMainMenuBar遇到的两个问题,以下是具体解决方法:
1. 添加子菜单分隔符
ActionMainMenuBar不支持通过设置Caption为'-'来添加分隔符,需直接创建TActionSeparatorItem并添加到子菜单的Items集合中,无需关联任何Action:
// 添加分隔符 SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.AddSeparator;
2. 设置子菜单两列布局
ActionMainMenuBar的子菜单本质是动态生成的TPopupMenu,需找到对应的菜单项并设置其Break属性为mbBarBreak。可通过SubMenuItem的MenuItem属性获取原生菜单项进行设置:
// 在目标位置设置列分隔 SubMenuItem := ActionManager.ActionBars[0].Items[0].Items[3]; // 对应SubItem_3的位置 SubMenuItem.MenuItem.Break := mbBarBreak;
修改后的完整Call_Actionmanager_SubMenu_Items过程
procedure TMainForm.Call_Actionmanager_SubMenu_Items; var SubAction : TCustomAction; begin // SubItem_1 SubAction := TCustomAction.Create(MainForm); SubAction.Caption := 'SubItem_1'; SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.Add; SubAction.OnExecute := MainForm.Call_Standaard_Actie; SubMenuItem.Action := SubAction; // SubItem_2 SubAction := TCustomAction.Create(MainForm); SubAction.Caption := 'SubItem_2'; SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.Add; SubAction.OnExecute := MainForm.Call_Standaard_Actie; SubMenuItem.Action := SubAction; // 添加分隔符 SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.AddSeparator; // SubItem_3 SubAction := TCustomAction.Create(MainForm); SubAction.Caption := 'SubItem_3'; SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.Add; SubAction.OnExecute := MainForm.Call_Standaard_Actie; SubMenuItem.Action := SubAction; // 设置列分隔(SubItem_3后开始第二列) SubMenuItem.MenuItem.Break := mbBarBreak; // SubItem_4 SubAction := TCustomAction.Create(MainForm); SubAction.Caption := 'SubItem_4'; SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.Add; SubAction.OnExecute := MainForm.Call_Standaard_Actie; SubMenuItem.Action := SubAction; // SubItem_5 SubAction := TCustomAction.Create(MainForm); SubAction.Caption := 'SubItem_5'; SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.Add; SubAction.OnExecute := MainForm.Call_Standaard_Actie; SubMenuItem.Action := SubAction; // SubItem_6 SubAction := TCustomAction.Create(MainForm); SubAction.Caption := 'SubItem_6'; SubmenuItem := ActionManager.ActionBars[0].Items[0].Items.Add; SubAction.OnExecute := MainForm.Call_Standaard_Actie; SubMenuItem.Action := SubAction; end;
内容的提问来源于stack exchange,提问作者Duikert
相关产品推荐
相关产品推荐

