探索菜单项的特性

AutoCAD ActiveX/VBA

 
探索菜单项的特性
 
 
 

所有的菜单项都具有以下特性:

TagString

标记(或名称标记)是由字母数字和下划线 (_) 字符组成的字符串,能够在给定菜单内唯一标识菜单项。标记还能够标识菜单项对应的加速键(键盘按键序列)。

可以使用 TagString 特性来读取或写入标记的值。

Label

标签是定义菜单项内容和格式的字符串。

菜单项标签可以包含 DIESEL 字符串表达式,在每次显示标签时按条件改变标签。

可以使用 Label 特性来读取或写入标签的值。

Caption

标题是用户看到的、显示在菜单上的文字。此特性是只读的,通过删除任何 DIESEL 字符串表达式从 Label 特性中衍生。

可以使用 Caption 特性来读取标题值。

宏是在选择菜单项时执行特定操作的一系列命令,可以只是完成任务的按键记录,也可以是复杂的命令、AutoLISP、DIESEL 或 ActiveX 编程代码等的组合。

可以使用 Macro 特性来读取或写入宏的值。

HelpString

帮助字符串是在用户亮显选定的菜单项时,显示在 AutoCAD 状态行中的文字字符串。

可以使用 HelpString 特性来读取或写入帮助字符串的值。

Enable

使用 Enable 特性可以启用或禁用菜单项。通过读取 Enable 特性还可以判断菜单项当前是否启用。使用此特性启用或禁用菜单项,会替代菜单项的 DIESEL 表达式中所有用于启用的设置。

请参见探索菜单项的特性中禁用菜单项的样例。

Check

使用 Check 特性,可以复选或取消复选菜单项。通过读取 Check 特性,还可以判断菜单项当前是否被复选。使用此特性来复选或取消复选菜单项,会替代菜单项的 DIESEL 表达式中所有用于复选的设置。

Index

菜单项的索引用于指定该菜单项在其所属菜单中的位置。菜单的索引位置始终从位置 0 开始。例如,如果某一项是菜单的第一项,它会返回索引位置 0;如果是菜单的第二项,则会返回索引位置 1,依此类推。

Type

可以使用 Type 特性来判断菜单项的类型。菜单项可以是以下类型之一:普通菜单、分隔符或子菜单的标题。如果是普通菜单项,此特性将返回 acMenuItem;如果是分隔符,将返回 acMenuSeparator;如果是子菜单的标题,则返回 acSubMenu

SubMenu

可以使用 SubMenu 特性查找子菜单。如果菜单项是 acSubMenu 类型,此特性将返回附着为子菜单或嵌入菜单的菜单。嵌入菜单是作为 PopupMenu 对象返回的。

如果菜单项不是 acSubMenu 类型,此特性将返回错误。

Parent

可以使用 Parent 特性查找菜单项所属的菜单。此特性将返回菜单项所在的菜单。上级菜单是作为 PopupMenu 对象返回的。

启用和禁用菜单项

本例创建称为“TestMenu”的新菜单,并插入两个菜单项。然后使用 Enable 特性禁用第二个菜单项,最后将菜单显示在菜单栏上。

Sub Ch6_DisableMenuItem()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
      
    ' 创建新菜单
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add("TestMenu")
      
    ' 向新菜单添加两个菜单项和一个菜单分隔符
    Dim MenuEnable As AcadPopupMenuItem
    Dim MenuDisable As AcadPopupMenuItem
    Dim MenuSeparator As AcadPopupMenuItem
    Dim openMacro As String
      
    ' 给宏指定“ESC ESC _open”的 VB 等价值
    openMacro = Chr(3) + Chr(3) + "_open "
      
    Set MenuEnable = newMenu.AddMenuItem _
                (newMenu.count + 1, "OpenEnabled", openMacro)
    Set MenuSeparator = newMenu.AddSeparator("")
    Set MenuDisable = newMenu.AddMenuItem _
                (newMenu.count + 1, "OpenDisabled", openMacro)
      
    ' 禁用第二个菜单项
    MenuDisable.Enable = False
      
    ' 在菜单栏上显示菜单
    newMenu.InsertInMenuBar _
                (ThisDrawing.Application.menuBar.count + 1)
End Sub