概要 - メニュー項目のプロパティを調べる(VBA/ActiveX)

PopupMenuItem オブジェクトのプロパティを使用することで、このオブジェクトの PopupMenu オブジェクトでの外観や動作をコントロールすることができます。

すべてのメニュー項目は、次のプロパティを共有します。

TagString
タグは名前タグとも呼び、英数字とアンダースコア(_)文字からなる文字列です。この文字列は特定のメニュー内のメニュー項目を一意に識別するためのものです。タグはメニュー項目と対応するアクセラレータ キー(キーボードからのキー シーケンス)を識別します。

TagString プロパティを使用すると、タグの値を読み込むまたは書き込むことができます。

Label
ラベルは、メニュー項目の内容と形式を定義する文字列です。

メニュー項目のラベルには、表示のたびに条件に応じてラベルを変更する DIESEL 文字列式を入れることができます。

Label プロパティを使用すると、ラベルの値を読み込むまたは書き込むことができます。

Caption
タイトルは、ユーザ向けにメニュー上に表示される文字のことです。このプロパティは読み込み専用で、DIESEL 文字列式を取り除いた Label プロパティから生成されます。

Caption プロパティを使用すると、タイトルの値を読み込むことができます。

Macro
マクロは、メニュー項目が選択されたときに特定のアクションを実行する一連のコマンドです。メニュー マクロには、タスクを遂行するキーストロークを列挙しただけのものもあれば、コマンド、AutoLISP、DIESEL、または ActiveX プログラミング コードを複雑に組み合わせたものもあります。

Macro プロパティを使用すると、メニュー マクロの値を読み込むまたは書き込むことができます。

HelpString
ヘルプ文字列は、ユーザがメニュー項目をハイライト表示して選択するときに、AutoCAD ステータス行に表示される文字列です。

HelpString プロパティを使用すると、ヘルプ文字列の値を読み込んだり、書き込むことができます。

Enable
Enable プロパティを使用すると、メニュー項目を有効または無効にすることができます。また、Enable プロパティを読み込んで、メニュー項目が現在、有効と無効のどちらになっているかを判定することもできます。このプロパティを使用してメニュー項目を有効または無効にすると、メニュー項目の DIESEL 式で有効にしているどの設定よりも優先されます。
Check
Check プロパティを使用すると、メニュー項目にチェックマークを付けるまたはチェックマークをはずすことができます。また、Check プロパティを読み込んで、メニュー項目に現在チェックマークが付いているか、それとも消えているかを判定することもできます。このプロパティを使ってメニュー項目にチェックマークを付けたり、消したりすると、メニュー項目の DIESEL 式でチェックマークが付けられているどの設定よりも優先されます。
Index
メニュー項目のインデックスは、そのメニュー項目が属するメニュー内での位置を示します。メニューのインデックス位置は必ず位置 0 から始まります。たとえば、メニューの最初の項目の場合は、インデックス位置 0 が返されます。メニューの 2 番目の項目の場合は、インデックス位置 1 が返されます。
Type
Type プロパティを使用すると、メニュー項目のタイプを判定することができます。メニュー項目は、 標準メニュー、区切り記号、サブメニューの見出しのいずれかのタイプになります。標準メニュー項目の場合、このプロパティから acMenuItem が返されます。項目が区切り記号の場合、このプロパティから acMenuSeparator が返されます。項目がサブメニューの見出しの場合、このプロパティから acSubMenu が返されます。
SubMenu
SubMenu プロパティを使用すると、サブメニューを見つけることができます。メニュー項目のタイプが acSubMenu の場合、このプロパティからはサブメニュー、つまり埋め込まれたメニューとしてアタッチされているメニューが返されます。埋め込まれたメニューは PopupMenu オブジェクトとして返されます。

メニュー項目のタイプが acSubMenu でない場合は、このプロパティからエラーが返されます。

Parent
Parent プロパティを使用すると、メニュー項目が属しているメニューを見つけることができます。このプロパティからは、そのメニュー項目が入っているメニューが返されます。親メニューは PopupMenu オブジェクトとして返されます。

メニュー項目を有効および無効にする

この例では、"TestMenu" という新しいメニューを作成し、これに 2 つのメニュー項目を挿入します。2 つ目のメニュー項目を Enable プロパティを使用して無効とし、メニューをメニュー バーに表示します。

Sub Ch6_DisableMenuItem()
 Dim currMenuGroup As AcadMenuGroup
 Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)

 ' Create the new menu
 Dim newMenu As AcadPopupMenu
 Set newMenu = currMenuGroup.Menus.Add("TestMenu")

 ' Add two menu items and a menu separator to the new menu
 Dim MenuEnable As AcadPopupMenuItem
 Dim MenuDisable As AcadPopupMenuItem
 Dim MenuSeparator As AcadPopupMenuItem
 Dim openMacro As String

 ' Assign the macro the VB equivalent of "ESC ESC _open "
 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)

 ' Disable the second menu item
 MenuDisable.Enable = False

 ' Display the menu on the menu bar
 newMenu.InsertInMenuBar _
 (ThisDrawing.Application.menuBar.count + 1)
End Sub