# listbox

リストボックスを開き、ユーザーに項目を選択させる。

    listbox <message> <title> <string array> [<selected>]

## パラメータ

文字列 <message>
  リストボックスに表示されるメッセージ。
文字列 <title>
  リストボックスのタイトル。
文字列型配列 <string array>
  リストボックスの選択項目。
整数値 <selected> (バージョン 4.89 以降)
  初期選択項目(0オリジンインデックス)。省略可能。

## 返り値

システム変数 <result>
  項目が選択された場合、0 - (N-1)のいずれかの値が格納される。
  キャンセルされた場合、-1が格納される。

## 解説

listbox マクロコマンドは <string array> の配列要素をすべて選択項目として表示します。
以下のように、表示しようとする選択項目数より大きい要素数で <string array> を定義すると、最後に空文字列が表示されます。

    strdim msg 4
    msg[0] = 'バナナ'
    msg[1] = 'りんご'
    msg[2] = 'みかん'
    listbox '好きな食べ物を選んでください' 'あなたへの問い' msg

    ; 選択肢が4つ表示される
    バナナ
    りんご
    みかん
    [空文字列]

(バージョン 4.89 以降)
<selected> を指定する事で、初期状態で選択されている項目を指定する事ができます。
省略した場合は 0 (先頭)が指定されたものとして扱われます。

## 例

    strdim msg 3
    msg[0] = 'バナナ'
    msg[1] = 'りんご'
    msg[2] = 'みかん'
    listbox '好きな食べ物を選んでください' 'あなたへの問い' msg
    sprintf2 var "%d" result
    messagebox var "result"
    ; result
    ;   -1: Cancel
    ;    0: バナナ
    ;    1: りんご
    ;    2: みかん

    strdim msg 7
    msg[0] = '晴れ'
    msg[1] = '曇り'
    msg[2] = '雨'
    msg[3] = '風'
    msg[4] = '雪'
    msg[5] = '霧'
    msg[6] = '分かりません'
    ; デフォルトで7番目の項目が選択される
    listbox '今日の天気はどうですか?' 'あなたへの問い' msg 6
    sprintf2 var "%d" result
    messagebox var "result"

## 参照

- inputbox
- passwordbox
- setdlgpos
- yesnobox