画像ボタンに押したときに実行する処理と紐づけして、アクションを付けます。
予備知識
画像ボタンには、スライドを使います。
表示させるスライドを用意し、SLIDE-A という名前でサポートファイルの検索パス内のフォルダに保存してください。
スライドの作り方についてはコチラを。
画像ボタンタイルにアクションを付ける
紐づけする処理
今回は、ボタンと、Hello World メッセージボックスが出る関数を紐づけします。
(defun hello ()
(alert "Hello World")
)
コマンドを実行すると右側のダイアログボックスが出てきて、画像をクリックすると、左側のメッセージボックスが出てきます。
DCL
DCLは、以下のAutoLISPプログラムで呼び出すので、JagaDCL.dclという名前で、サポートファイルの検索パス内のフォルダに保存してください。
Test_ImageButton:dialog {label= "Image Dialog Box";
:image_button {key="A"; height=10; width=10; color=250; action="(hello)";}
ok_cancel;
}
ボタンタイルにアクション属性を付けます。
action="(hello)";
この部分がアクション属性で、”(hello)” このようにボタンを押されたら実行したい関数を入れます。DCLとやり取りする場合、関数名には( )だけではなく、” ” も付くので気を付けて下さい。
AutoLISP
ダイアログボックスを表示、画像ボタンタイルにスライドを表示、OK(accept) / Cancel ボタンで閉じる部分を設定します。 実行させる関数 hello も読み込んでください。
(defun c:test (/ dcl_id Act)
(setq dcl_id (load_dialog "JagaDCL.dcl")) ;
(if (not (new_dialog "Test_ImageButton" dcl_id))
(progn
(princ "***ダイアログボックスが見つかりません***")
(exit)
));if
;-----------------------------------------------------------
(start_image "A")
(slide_image 0 0 (dimx_tile "A")(dimy_tile "A") "SLIDE-A")
(end_image)
;-----------------------------------------------------------
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
;-----------------------------------------------------------
(setq Act (start_dialog))
(unload_dialog dcl_id)
;-----------------------------------------------------------
(princ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun hello ()
(alert "Hello World")
)
実行したい関数との紐づけは、AutoLISP側から関数 action_tile を利用しても同じ結果になります。
ボタンタイルの記事ではDCL側の属性でアクションを付ける方法と、AutoLISP側の関数でアクションを付ける方法両方紹介しました。
まとめ
- 画像ボタンタイルは、ボタンとして使える。
- actionは、ダイアログボックスのタイルにアクションを加えるDCLのタイル属性。
- そのタイルから実行したい関数名を紐づけする。
- AutoLISP側で 関数 action_tile を使ってもタイルとアクションを紐づけできる。
Comments