Listbox UI コントロール

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