Listbox UI コントロール
Listbox コントロールは、リスト ボックスをロールアウトに配置するのに使用します。
これはドロップダウン リストとは異なり、リスト全体が常にロールアウトに表示されます。
コンボボックスとは異なり、上部に編集テキスト フィールドはなく、スクロール可能な簡単なリストだけがあります。ユーザはリストをスクロールするか、あるいはクリックして項目を選択できます。
構文は次のようになります。
listbox <name> [<caption>] [items:<array_of_strings>] [selection:<number>] [height:<number>] [readOnly:<boolean>]
listbox 項目の位置合わせの既定値は、 #left です。
パラメータ
リスト内の項目であるテキスト文字列の配列です。
現在選択されているリスト内の項目番号。基数は 1 です。選択の既定値は 1 です。
項目行の数で示す listbox 全体の高さ。既定値は 10 行です。 listBox で正確に N 項目を表示するには、高さを N に設定します。
高さの最小値は 1 行です。
true に設定した場合、ユーザはリストから項目を選択できません。false に設定するか何も指定しなかった場合、ユーザはリストから項目を選択できます。
プロパティ:
<listbox>.items Array Of Strings
項目列の配列です。
<listbox>.selection Integer
現在選択されている項目番号。基数は 1 です。項目のリストが空配列の場合、値は 0 (ゼロ)になります。
<listbox>.selected String
現在選択されている項目のテキストです。個々の項目を置換して items 配列全体をリセットするために使用します。項目リストが空の配列の場合、この値は undefined です。
true に設定した場合、ユーザはリストから項目を選択できません。 false に設定した場合、ユーザはリストから項目を選択できます。
リストボックスのリスト ウィンドウの幅をピクセル単位で取得/設定します。
リストボックスのリスト ウィンドウの高さをピクセル単位で取得/設定します。
注:コンストラクタ パラメータとして、 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
|