ダイアログ ボックスでリストに項目を入力するためには、特定のシーケンスに従う必要があります。
ダイアログ ボックスのリスト操作は、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 (ゼロ)になります。
次のようにしてリスト操作を組み込みます。
start_list を呼び出した後、add_list を繰り返し呼び出してリストに新しい項目を追加します。リストの処理を終了するには end_list を呼び出します。
start_list を呼び出した後、start_list の呼び出しで指定したインデックスの項目を置き換えるには、add_list を 1 回呼び出します(add_list を 2 回以上呼び出すと、再び同じ項目が置き換えられます)。リストの処理を終了するには end_list を呼び出します。
start_list を呼び出した後、リストの最後に項目を追加するには、add_list を呼び出します。add_list を呼び出し続けると、end_list を呼び出すまで項目が追加されていきます。
どのリスト操作を行うかに関係なく、3 つの関数を連続して呼び出す必要があります。start_list、add_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)
リストを初めから再構築しない限り、リスト項目を削除したり挿入することはできません。