「Done dialog」の版間の差分
編集の要約なし |
細編集の要約なし |
||
(同じ利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
{{AutoLISP}} | |||
; 構文 | ; 構文 | ||
: (done_dialog [''status'']) | : (done_dialog [''status'']) | ||
5行目: | 6行目: | ||
; 機能 | ; 機能 | ||
: ダイアログ ボックスを終了する。 | : ダイアログ ボックスを終了する。 | ||
; 引数 | ; 引数 | ||
:* status : [OK]に対して1、[キャンセル]に対して0を返す代わりに、start_dialog | :* status : [OK]に対して1、[キャンセル]に対して0を返す代わりに、start_dialog が返す正の整数。 | ||
:* 2以上の status 値の意味は、アプリケーションが決定する。 | |||
:* done_dialog はアクション式かコールバック関数内から呼び出す必要がある(「 [[action_tile]] 」参照)。 | |||
; 戻り値 | ; 戻り値 | ||
: 2D の点リスト。 このリストは、ユーザがダイアログを終了したときの(X,Y)位置を表す。 | : 2D の点リスト。 このリストは、ユーザがダイアログを終了したときの(X,Y)位置を表す。 | ||
; 使用上の注意 | ; 使用上の注意 | ||
:キーが "accept" または "cancel" であるボタン(通常は[OK]ボタンと[キャンセル]ボタン)にコールバックを割り当てる場合、そのコールバックは done_dialog を明示的に呼び出さなければならない。呼び出さない場合、ダイアログ | :キーが "accept" または "cancel" であるボタン(通常は[OK]ボタンと[キャンセル]ボタン)にコールバックを割り当てる場合、そのコールバックは done_dialog を明示的に呼び出さなければならない。呼び出さない場合、ダイアログ から抜けられなくなる可能性がある。 | ||
: これらのボタンに明示的なコールバックを与えずに標準の終了ボタンを使用する場合、CAD が自動的に処理する。 | |||
: 又、[accept]ボタンに割り当てられる明示的な LISP関数は、status として 1(又はアプリケーションで定義される値)を指定しなければならない。それ以外の場合、start_dialog は既定値の 0を返す。この場合、ダイアログがキャンセルされたように見える。 | : 又、[accept]ボタンに割り当てられる明示的な LISP関数は、status として 1(又はアプリケーションで定義される値)を指定しなければならない。それ以外の場合、start_dialog は既定値の 0を返す。この場合、ダイアログがキャンセルされたように見える。 | ||
<pre class="brush: autolisp;"> | <pre class="brush: autolisp;"> | ||
(defun c:hidedcl (/ dcl_id what_next cnt) | (defun c:hidedcl (/ dcl_id what_next cnt) | ||
(setq dcl_id (load_dialog "hidedcl.dcl")) ;ダイアログ ボックスをロード。 | (setq dcl_id (load_dialog "hidedcl.dcl")) ;ダイアログ ボックスをロード。 | ||
(setq what_next 2) | (setq what_next 2) | ||
(setq cnt 1) | (setq cnt 1) | ||
(while (>= what_next 2) ;表示ループを開始。 | (while (>= what_next 2) ;表示ループを開始。 | ||
(if (null (new_dialog "hidedcl" dcl_id)) ;ダイアログ ボックスを初期化。 | (if (null (new_dialog "hidedcl" dcl_id "" (cond *scrp* '(-1 -1)))) ;ダイアログ ボックスを初期化。 | ||
(exit) ;nil が返された場合は終了。 | (exit) ;nil が返された場合は終了。 | ||
) | ) | ||
33行目: | 38行目: | ||
; このステータス コードは start_dialog によって返される。 | ; このステータス コードは start_dialog によって返される。 | ||
(action_tile "accept" "(done_dialog 1)") ;[OK]のアクションを設定します。 | (action_tile "accept" "(setq *scrp* (done_dialog 1))") ;[OK]のアクションを設定します。 | ||
(action_tile "hide" "(done_dialog 4)") ;[点を指定]のアクションを設定 | (action_tile "hide" "(done_dialog 4)") ;[点を指定]のアクションを設定 | ||
;します。 | ;します。 | ||
(setq what_next (start_dialog)) ;ダイアログ ボックスを表示します。 | (setq what_next (start_dialog)) ;ダイアログ ボックスを表示します。 | ||
; | ; | ||
(cond | (cond | ||
((= what_next 4) ; | ((= what_next 4) ;点を指定するようユーザに要求。 | ||
(getpoint "¥n点を指定: ") | (getpoint "¥n点を指定: ") | ||
) | ) | ||
((= what_next 0) | ((= what_next 0) | ||
46行目: | 51行目: | ||
) | ) | ||
) | ) | ||
) | ) ;_end_while | ||
(unload_dialog dcl_id) | (unload_dialog dcl_id) | ||
(princ) | (princ) | ||
) | ) | ||
</pre> | </pre> | ||
DCLファイル | |||
<pre class="brush:autolisp;"> | |||
hidedcl : dialog | |||
{ label="隠すサンプル"; | |||
: column | |||
{ : text | |||
{ key="message"; | |||
label="[点を指定]をクリック"; | |||
fixed_width=true; | |||
fixed_height=true; | |||
alignment=centered; | |||
} | |||
:row | |||
{ ok_only; | |||
:retirement_button | |||
{ label = "点を指定"; | |||
key = "hide"; | |||
mnemonic = "H"; | |||
}}}} | |||
</pre> | |||
----- | |||
関連事項 | |||
* [[action_tile]] | |||
* [[new_dialog]] | |||
[[Category:AutoLISP]] | [[Category:AutoLISP]] |
2016年6月18日 (土) 13:48時点における最新版
- 構文
- (done_dialog [status])
- 機能
- ダイアログ ボックスを終了する。
- 引数
-
- status : [OK]に対して1、[キャンセル]に対して0を返す代わりに、start_dialog が返す正の整数。
- 2以上の status 値の意味は、アプリケーションが決定する。
- done_dialog はアクション式かコールバック関数内から呼び出す必要がある(「 action_tile 」参照)。
- 戻り値
- 2D の点リスト。 このリストは、ユーザがダイアログを終了したときの(X,Y)位置を表す。
- 使用上の注意
- キーが "accept" または "cancel" であるボタン(通常は[OK]ボタンと[キャンセル]ボタン)にコールバックを割り当てる場合、そのコールバックは done_dialog を明示的に呼び出さなければならない。呼び出さない場合、ダイアログ から抜けられなくなる可能性がある。
- これらのボタンに明示的なコールバックを与えずに標準の終了ボタンを使用する場合、CAD が自動的に処理する。
- 又、[accept]ボタンに割り当てられる明示的な LISP関数は、status として 1(又はアプリケーションで定義される値)を指定しなければならない。それ以外の場合、start_dialog は既定値の 0を返す。この場合、ダイアログがキャンセルされたように見える。
(defun c:hidedcl (/ dcl_id what_next cnt) (setq dcl_id (load_dialog "hidedcl.dcl")) ;ダイアログ ボックスをロード。 (setq what_next 2) (setq cnt 1) (while (>= what_next 2) ;表示ループを開始。 (if (null (new_dialog "hidedcl" dcl_id "" (cond *scrp* '(-1 -1)))) ;ダイアログ ボックスを初期化。 (exit) ;nil が返された場合は終了。 ) ; ボタンが押された場合のアクションを設定します。ボタンが ; 押されると done_dialog が呼び出され、ダイアログ ボックスが閉じます。 ; 各ボタンは固有のステータス コードを done_dialog に関連付けて、 ; このステータス コードは start_dialog によって返される。 (action_tile "accept" "(setq *scrp* (done_dialog 1))") ;[OK]のアクションを設定します。 (action_tile "hide" "(done_dialog 4)") ;[点を指定]のアクションを設定 ;します。 (setq what_next (start_dialog)) ;ダイアログ ボックスを表示します。 ; (cond ((= what_next 4) ;点を指定するようユーザに要求。 (getpoint "¥n点を指定: ") ) ((= what_next 0) (prompt "¥nユーザによりダイアログがキャンセルされました") ) ) ) ;_end_while (unload_dialog dcl_id) (princ) )
DCLファイル
hidedcl : dialog { label="隠すサンプル"; : column { : text { key="message"; label="[点を指定]をクリック"; fixed_width=true; fixed_height=true; alignment=centered; } :row { ok_only; :retirement_button { label = "点を指定"; key = "hide"; mnemonic = "H"; }}}}
関連事項