创建级联子菜单
From AutoCAD ActiveX/VBA
要添加级联子菜单,请使用 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 AcadPopupMenuSet newMenu = currMenuGroup.Menus.Add("TestMenu")' 添加子菜单Dim FileSubMenu As AcadPopupMenuSet FileSubMenu = newMenu.AddSubMenu("", "OpenFile")' 向子菜单添加菜单项Dim newMenuItem As AcadPopupMenuItemDim 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