Listbox コントロールは、リスト ボックスをロールアウトに配置するのに使用します。
これはドロップダウン リストとは異なり、リスト全体が常にロールアウトに表示されます。
コンボボックスとは異なり、上部に編集テキスト フィールドはなく、スクロール可能な簡単なリストだけがあります。ユーザはリストをスクロールするか、あるいはクリックして項目を選択できます。
構文は次のようになります。
listbox <name> [<caption>] [items:<array_of_strings>] [selection:<number>] [height:<number>] [readOnly:<boolean>] [toolTip:<string>]
listbox
項目の位置合わせの既定値は、#left
です。
パラメータ
items:
リスト内の項目であるテキスト文字列の配列です。
selection:
現在選択されているリスト内の項目番号。基数は 1 です。選択の既定値は 1 です。
height:
項目行の数で示す listbox
全体の高さです。既定値は 10 行です。listBox
で正確に N
項目を表示するには、高さを N
に設定します。
高さの最小値は 1 行です。
readOnly:
true に設定した場合、ユーザはリストから項目を選択できません。false に設定するか何も指定しなかった場合、ユーザはリストから項目を選択できます。
toolTip:
listbox
のツールチップに使用するテキストを提供します。指定しない場合、ツールチップは表示されません。3ds Max 2017 以降で使用可能です。
プロパティ:
<listbox>.items Array Of Strings
項目列の配列です。
<listbox>.selection Integer
現在選択されている項目番号。基数は 1 です。項目のリストが空配列の場合、値は 0 (ゼロ)になります。
<listbox>.selected String
現在選択されている項目のテキストです。個々の項目を置換して items
配列全体をリセットするために使用します。項目リストが空の配列の場合、この値は undefined
です。
<listbox>.readOnly
true
に設定した場合、ユーザはリストから項目を選択できません。false
に設定した場合、ユーザはリストから項目を選択できます。
<listbox>.width Integer
リストボックスのリスト ウィンドウの幅をピクセル単位で取得/設定します。
<listbox>.height Integer
リストボックスのリスト ウィンドウの高さをピクセル単位で取得/設定します。
height:
はテキストの行によって高さを指定し、.height
プロパティは高さをピクセル単位で指定します。イベント
on <listbox> selected <arg> do <expr>
ユーザがリスト内の項目を選択したときに呼び出されます。引数 <arg>
には、新しい、現在の選択項目番号が入ります。
on <listbox> doubleClicked <arg> do <expr>
ユーザがリスト内の項目をダブルクリックしたときに呼び出されます。on selected
ハンドラは、クリック、およびダブルクリックの 1 回目のクリックで常に呼び出されるので注意してください。<arg>
引数には、ダブルクリックされた項目の数が保持されます。
on <listbox> rightClick [<arg>] do <expr>
リスト内の項目を右クリックしたときに呼び出されます。
オプションの <arg>
引数を指定すると、右クリックした項目のインデックスが含まれます。
3ds Max 2010以降で使用可能です。
リストボックスの例:
rollout objectKiller "Object Killer" ( --Define a list box, collect the names of all scene objects and --assign them to the items array listbox objectToKill "Objects:" items:(for o in objects collect o.name) --If the user clicked a name on the list, --get the name from the .items array by index --then get the node by name and select it. --COMPARE to the doubleClicked handler below which performs a --similar task using a slightly different approach. --Both ways are valid! on objectToKill selected nameIndex do select (getNodeByName objectToKill.items[nameIndex]) on objectToKill doubleClicked itm do ( --Get node using its name from the .selected property and delete it: delete (getNodeByName objectToKill.selected) --Get the items into a temporary array: temp = objectToKill.items --Delete the doubleckicked item by index --the local variable itm contains the index! deleteItem temp itm --Assign the result back to the items array: objectToKill.items = temp ) ) createDialog objectKiller--create a dialog from the rolloutParameters