DCL

提供:GizmoLabs - だいたい CAD LISP なサイト
2010年1月2日 (土) 02:26時点におけるGizmon (トーク | 投稿記録)による版 (→‎タイルの属性)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
印刷用ページはサポート対象外です。表示エラーが発生する可能性があります。ブラウザーのブックマークを更新し、印刷にはブラウザーの印刷機能を使用してください。

DCL (Dialog Control Language)はダイアログ ボックスを作成するものである。

ダイアログ ボックスは、ダイアログ コントロール言語(DCL)で書かれた ASCII ファイルで定義し、主に LISP プログラムで利用する。 ボタンや編集ボックスなどのダイアログ ボックスの要素を、タイルと呼び、各タイルのサイズと機能は、個々のタイルの属性でコントロールする。ダイアログ ボックスのサイズと各部のレイアウトは、最小限の位置情報を使用して自動的に設定される。

AutoCAD の Visual LISP では、ダイアログ ボックスを表示するためのツールを備えている。

LISPからダイアログボックスを使用する一般的な手順

  1. load_dialog で DCL ファイルをロードする。
  2. new_dialog で、表示するダイアログ ボックスを呼び出す。(この時、new_dialog が返す値を必ずチェックし、呼び出しが失敗していないか確認する。失敗した状態で start_dialog を呼び出すと、予測できない結果になる可能性がある。)
  3. ダイアログのタイル値やリスト、イメージなどの設定を初期化したり、action_tile タイルの挙動を設定したりする。この時使用するダイアログ関数は set_tilemode_tilestart_listadd_listend_liststart_imagevector_imagefill_imageslide_imageend_imageclient_data_tile となる。
  4. start_dialog でダイアログを呼び出す。この時点でコントロールがダイアログ ボックスに切り替わる。
  5. (ユーザの操作により アクション(コールバック)内からユーザ入力を処理する。get_tileget_attrset_tilemode_tile などが処理される。
  6. ユーザが終了ボタン(あるいは終了処理)を選択したときに done_dialog が呼び出される。これにより、start_dialog が値を返す。ここで、unload_dialog を呼び出し、DCL ファイルをロード解除する。


  • DCL ファイルには複数のダイアログを保存しておくことが出来るので、メモリに余裕があればすべてのダイアログ ボックスを一度にロードしておき、特定のダイアログ ボックスを逐次 new_dialog にて呼び出すことができる。厳しいメモリ環境を考慮するなら複数の DCL ファイルを作成し、load_dialogと unload_dialog を使用してダイアログ ボックスのセットをメモリから極力削除した形の方法が望ましい。となっているが、今となってはダイアログせ消費されるメモリなどたかが知れてるので、積極的にまとめてしまっていいと思う。

タイルの種類

タイルの種類は、以下の通り。

標準のボタン (サブアセンブリ)
定義済みのアクティブ タイル
装飾と情報タイル
文字クラスタ
タイルクラスタ

タイルの属性

タイルの属性は、以下の通り。

全体の属性
属性名 :
  • alignment
  • fixed_height
  • fixed_width
  • height
  • width
適用タイル :
  • すべてのタイル


アクションタイルの属性
属性名 :
  • action
  • is_enabled
  • is_tab_stop
  • key
  • mnemonic
適用タイル :
  • button; edit_box; image_button; list_box; popup_list; radio_button; slider; toggle; radio_column; radio_row


タイルクラスタの属性
属性名 :
  • children_alignment
  • children_fixed_height
  • children_fixed_width
適用タイル :
  • row; column; radio_row; radio_column; boxed_row; boxed_column; boxed_radio_row; boxed_radio_column.
特定のタイルで使用する属性
属性名 適用タイル
allow_accept edit_box; image_button; list_box
aspect_ration image; image_button.
big_increment slider.
color image; image_button.
edit_limit edit_box.
edit_width edit_box; popup_list.
fixed_width_font edit_box; popup_list.
initial_focus dialog.
is_cancel button.
is_default button.
label boxed_row; boxed_column; boxed_radio_row; boxed_radio_column; button; dialog; edit_box; list_box; popup_list; radio_button; text; toggle.
layout slider.
list list_box; popup_list.
max_value slider.
min_value slider.
multiple_select list_box.
password_char edit_box.
small_increment slider.
tabs list_box; popup_list.
tab_truncate list_box; popup_list
value text; all active tiles (except buttons and image_buttons).