概要 - リスト ボックスとポップ アップリストのリスト操作(DCL)

ダイアログ ボックスでリストに項目を入力するためには、特定のシーケンスに従う必要があります。

注: AutoLISP での DCL のサポートは Windows のみに制限されています。

ダイアログ ボックスのリスト操作は、start_list 関数を呼び出すことから始めます。関数の構文は、次のとおりです。

(start_list key [operation [index]])

key 引数は、ダイアログ ボックスのタイルを指定する文字列です。key 引数は、大文字と小文字が区別されます。operation 引数は、新しいリストを作成するのか、リストを変更するのか、リストに追加するのかを指定する整数値です。次に、有効な operation 引数を示します。

start_list の operation のコード

説 明

1

選択したリスト項目の内容を変更します。

2

新しいリスト項目を追加します。

3

古いリストを削除して新しいリストを作成します(既定)。

index 引数は、操作を変更するときだけ指定します。インデックスには、その後の add_list の呼び出しで変更するリスト項目を指定します。リスト内の最初の項目は、インデックス 0(ゼロ)になります。operation を指定しない場合は、既定の 3 になります(新しいリストを作成)。index を指定しない場合は、インデックスは既定の 0 (ゼロ)になります。

次のようにしてリスト操作を組み込みます。

新しいリストを作成します(3)。

start_list を呼び出した後、add_list を繰り返し呼び出してリストに新しい項目を追加します。リストの処理を終了するには end_list を呼び出します。

リスト内の項目を変更します(1)。

start_list を呼び出した後、start_list の呼び出しで指定したインデックスの項目を置き換えるには、add_list を 1 回呼び出します(add_list を 2 回以上呼び出すと、再び同じ項目が置き換えられます)。リストの処理を終了するには end_list を呼び出します。

リストに項目を追加します(2)。

start_list を呼び出した後、リストの最後に項目を追加するには、add_list を呼び出します。add_list を呼び出し続けると、end_list を呼び出すまで項目が追加されていきます。

どのリスト操作を行うかに関係なく、3 つの関数を連続して呼び出す必要があります。start_listadd_list(必要に応じて複数回)、end_list の順に呼び出してください。

mapcar 関数は、純粋な AutoLISP のリストをリスト ボックスの表示に変換するのに役立ちます。次の例では、リスト appnames には selections というリスト ボックスに表示する文字列が含まれています。このコードを使用すると、次のようにリストを設定して表示できます。

(start_list "selections")    ;Specify the name of the list box.
(mapcar ' add_list appnames) ;Specify the AutoLISP list.
(end_list)

リスト作成(3)は既定なので、この例ではあえて 3 を指定していません。

list_box タイルの値は、選択された項目のインデックスです(または、複数回選択できる場合は、選択された複数の項目のインデックスです)。プログラムが、インデックスに関連している実際の文字を知る必要がある場合、プログラムは元のリストを保存しておかなくてはなりません。また、リストに対する変更内容を追跡する必要もあります。

リスト項目の追加は、新しいリストの作成に似ています。たとえば、appnames に 12 個の項目が含まれており、newnames という別のリストを追加する場合は、次のコードを使用できます。

(start_list "selections" 2)
(mapcar 'add_list newnames)
(end_list)

1 個の項目を変更するには、add_list を 1 回呼び出すだけです。この場合、変更する項目のインデックスを指定します。

(start_list "selections" 1 5) ;Change the sixth item in the list.
(add_list "SURPRISE!")        ;Remember that the first index is 0.
(end_list)

リストを初めから再構築しない限り、リスト項目を削除したり挿入することはできません。