创建级联子菜单

AutoCAD ActiveX/VBA

 
创建级联子菜单
 
 
 

要添加级联子菜单,请使用 AddSubmenu 方法创建子菜单。此方法将创建新的 PopupMenuItem 对象并将其添加到指定的菜单中。这种特殊的 PopupMenuItem 对象被指定为 acSubmenu 类型。

AddSubmenu 方法需要输入三个参数:IndexLabelTag

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