listbox

リストボックスを持つダイアログボックスを開き、ユーザーに項目を選択させる。(バージョン4.78以降)

listbox <message> <title> <string array> [<selected>] [<keyword parameter>...]

パラメータ

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

キーワード引数 : 省略可能、複数指定可、順不同
文字列 'dblclick=on' (デフォルト=off) (バージョン 5.3 以降)
ダブルクリックによるリストボックスの項目選択有効化。
文字列 'minmaxbutton=on' (デフォルト=off) (バージョン 5.3 以降)
最小化/最大化ボタン有効化。
文字列 'minimize=on' (デフォルト=off) (バージョン 5.3 以降)
最小化状態で表示。
文字列 'maximize=on' (デフォルト=off) (バージョン 5.3 以降)
最大化状態で表示。
文字列 'listboxsize=WxH' (デフォルト=26x6) (バージョン 5.3 以降)
リストボックスのサイズ指定。Wで横の長さを、Hで縦の長さを文字数で指定する。
例 'listboxsize=60x20' (横60文字、縦20文字の場合)

返り値

システム変数 <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"
strdim msg 9
selected = 0
msg[0] = "listbox msg[selected] title msg selected 'listboxsize=70x10'"
msg[1] = "listbox msg[selected] title msg selected 'listboxsize=70x10' 'dblclick=on'"
msg[2] = "listbox msg[selected] title msg selected 'listboxsize=70x10' 'minmaxbutton=on'"
msg[3] = "listbox msg[selected] title msg selected 'listboxsize=70x10' 'minimize=on'"
msg[4] = "listbox msg[selected] title msg selected 'listboxsize=70x10' 'maximize=on'"
msg[5] = "listbox msg[selected] title msg selected 'listboxsize=70x10' 'minmaxbutton=on' 'dblclick=on'"
msg[6] = "listbox msg[selected] title msg selected 'listboxsize=100x5'"
msg[7] = "listbox msg[selected] title msg selected 'listboxsize=10x20'"
msg[8] = "listbox msg[selected] title msg selected"
:select
sprintf2 title 'selected = %d' selected
execcmnd msg[selected]
selected=result
if selected = -1 then
  exit
endif
goto select

参照