要添加级联子菜单,请使用 AddSubmenu 方法创建子菜单。此方法将创建新的 PopupMenuItem 对象并将其添加到指定的菜单中。这种特殊的 PopupMenuItem 对象被指定为 acSubmenu 类型。
AddSubmenu 方法需要输入三个参数:Index、Label 和 Tag。
Index 参数是一个整数,用于指定新的菜单项在菜单中的位置。索引以位置零 (0) 作为菜单标题后的第一个位置。要在菜单末尾添加新的菜单项,请将 Index 参数设置为等于菜单的 Count 特性。(菜单的 Count 特性代表该菜单中菜单项的总数。)
Label 参数是一个字符串,用于定义菜单项的内容和格式。用户看到的菜单项文字称为标题,它通过解释所有的 DIESEL 字符串表达式和特殊代码从标签中衍生。例如,标签“&编辑”将生成标题“编辑”。
Tag 参数(或名称标记)是由字母数字和下划线 (_) 字符组成的字符串,能够在给定菜单内唯一标识菜单项。
AddSubmenu 方法不返回其创建的 PopupMenuItem 对象,而是返回子菜单指向的新菜单。可以将新菜单(作为 PopupMenu 对象返回)填充为普通菜单。关于填充菜单的信息,请参见向菜单添加新的菜单项。
本例创建称为“TestMenu”的新菜单,并将其添加到称为“OpenFile”的子菜单中。然后,将使用称为“Open”的菜单项充该子菜单,执行该菜单项将打开图形。最后,将菜单显示在菜单栏上。
Sub Ch6_AddASubMenu()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' 创建新菜单
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add("TestMenu")
' 添加子菜单
Dim FileSubMenu As AcadPopupMenu
Set FileSubMenu = newMenu.AddSubMenu("", "OpenFile")
' 向子菜单添加菜单项
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' 给宏指定“ESC ESC _open”的 VB 等价值
openMacro = Chr(3) + Chr(3) + "_open "
Set newMenuItem = FileSubMenu.AddMenuItem _
(newMenu.count + 1, "Open", openMacro)
' 在菜单栏上显示菜单
newMenu.InsertInMenuBar _
(ThisDrawing.Application.menuBar.count + 1)
End Sub