Vla-addsubmenu

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年2月8日 (日) 15:46時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-addsubmenu ''vla-object'' ''Index'' ''Label'') ; 機能 : 既存のメニューにサブメニューを追加する。 ; 引数 :* vla-...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-addsubmenu vla-object Index Label)


機能
既存のメニューにサブメニューを追加する。


引数
  • vla-object … PopupMenu の VLAオブジェクト
  • Index … 頂点を追加するメニューのインデックス位置
  • 整数を使用して、メニュー内の与えられた位置を指定する場合、インデックスは 0 から N-1 まで。N はポップアップ メニュー内のオブジェクトの数。この項目は、指定されたインデックス位置の直前に追加される。メニューの最後に新しいメニュー項目を加えるには、インデックスを N より大きく設定する。 文字列が指定され、インデックスされた項目が存在しない場合、新しいメニュー項目はメニューの最後に追加される。
  • Label … メニュー項目のラベル。ラベルは DIESEL 文字列式を含むことがある。ラベルはアクセラレータ文字の前にアンパサンド(&)を付けることにより、メニュー項目に該当するアクセラレータ キー(キーボードのキー シーケンス)も識別する。


戻り値
新しく作成されるサブメニューのVLAオブジェクト。新しいカスケード メニューは空白だが、メニューの標準操作で項目を追加することができる。


注意
  • このメソッドは新しい PopupMenuItem オブジェクトを作成し、指定されたメニューに追加るす。この特殊な PopupMenuItem オブジェクトにはタイプ acSubmenu が割り当てられる。


サンプル
(vl-load-com)
(defun c:Example_AddSubMenu()
    ;; テストメニューを追加してサブメニューを追加するサンプル
    ;; 追加されたメニューはカスタマイズから削除する
    (setq acadObj (vlax-get-acad-object))
    (setq currMenuGroup (vla-Item (vla-get-MenuGroups acadObj) 0))
    
    ;; 新しいメニューの作成
    (setq newMenu (vla-Add (vla-get-Menus currMenuGroup) "TestMenu"))
    
    ;; サブメニュー追加
    ;; マクロは ^C^C_open
    (setq FileSubMenu (vla-AddSubMenu newMenu "" "NewFile"))
    (setq openMacro (strcat (Chr 3) (Chr 3) (Chr 95) "open" (Chr 32)))
    (setq newMenuItem (vla-AddMenuItem FileSubMenu (1+ (vla-get-Count newMenu)) "Open" openMacro))
    
    ;; メニュー追加して表示
    (vla-InsertInMenuBar newMenu (1+ (vla-get-Count (vla-get-MenuBar acadObj))))
    (vla-SetVariable doc "MENUBAR" 1)
)

関連事項