チェックボックス(トグルスイッチ)付きのダイアログボックスを作ります。
チェックボックスは、オン/オフ 二択の選択肢に使います。
チェックボックス(トグルスイッチ)とは
このように、ラベルの横に四角い箱があり、レ点を入れてオン/オフできるタイルです。
タイル名は toggle です。
ダイアログボックス
チェックボックスを使ったダイアログボックスのコードです。
DCL
Test_CheckBox :dialog
{label = "Check Box";
//--------------------------------------------------------
:toggle {label = "Check"; key="CB";}
//-------------------------------------------------------- q
ok_cancel;
}
属性 label
toggleタイルにラベルを付けると、ボックスの横の文字になります。
label はダイアログボックスで表示する以外は使わないので、好きなように書いて下さい。AutoLISPと大文字小文字合わせることとか考えなくてもいいです。
属性 Key
このチェックボックスのキーは”CB”に設定しました。キーはAutoLISP側とやり取りをする部分なので、大文字小文字含めてAutoLISPと合う必要があります。
文字列ですので、数字をキーにする場合でもダブルクォーテーション ” ” を必ずつけてください。
AutoLISP
上記のDCLが、JagaDCL.dclという名前で、サポートファイルの検索パス内にあるフォルダに保存してあること前提のAutoLISPプログラムです。
コマンドの内容
上記のDCLのダイアログボックスを表示させて、レ点を付けていたらオン、付けなければオフと表示とアラートボックスを表示させます。
コマンド名は test です。
AutoLISP プログラム
(defun c:test ( / dcl_id Act CB)
(setq dcl_id (load_dialog "JagaDCL.dcl"))
(if (not (new_dialog "Test_CheckBox" dcl_id))
(progn
(princ "***ダイアログボックスが見つかりません***")
(exit)
));progn if
;-----------------------------------------------------------
(set_tile "CB" "0")
;-----------------------------------------------------------
(action_tile "accept" "(Test_GetVar)(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
;-----------------------------------------------------------
(setq Act (start_dialog))
(unload_dialog dcl_id)
;-----------------------------------------------------------
(cond
((= Act 0) (princ "ユーザーキャンセル"))
((= Act 1)
(if (= CB "1")
(alert "チェックボックス オン")
(alert "チェックボックス オフ")
);if
);act1
);cond
;----------------------------------------------------------
(princ))
;===========================================
(defun Test_GetVar ()
(setq CB (get_tile "CB"))
)
AutoLISPの説明
(set_tile "CB" "0")
チェックボックスの値は、オン=”1″ オフ=”0″ です。
ダイアログボックスとやり取りするときは文字列のみを使います。ダブルクォーテーションマークを忘れないようにしてください。
ここでは、まず初期値に”0″ を入れて、レ点が入っていない状態でダイアログボックスが開きます
(action_tile "accept" "(Test_GetVar)(done_dialog 1)")
“accept” はOKボタンのキーです。OKが押されたら、自作関数Test_GetVarを実行し、ダイアログボックスをを閉じ、1を戻します。
(defun Test_GetVar () (setq CB (get_tile "CB")) )
OKが押されたときに実行される自作関数Test_GetVarです。
get_tileで、キー”RadioTest”のタイルから値を得て、変数 CB に値を入れます
(cond ((= Act 0) (princ "ユーザーキャンセル")) ((= Act 1) (if (= CB "1") (alert "チェックボックス オン") (alert "チェックボックス オフ") );if );act1 );cond
条件式 cond 、OKが押されたらif も使い、
Act 0 (キャンセルボタンで終了)なら ユーザーキャンセルとコマンドラインに表示。
Act 1 (OKボタンで終了)なら、もし値が1なら”チェックボックス オン”、そうでなければ”チェックボックス オフ”とアラートボックスに表示させる。
となっています。
まとめ
- チェックボックスタイルは toggle
- オン/オフ 二択の選択肢の項目に使う。
Comments