セレクトボックスを表示します。第一引数に選択肢の種別、第二引数にタイムアウト時間、第三引数が数値ならx座標、第四引数にy座標、第三引数が数値でなければメッセージ、メッセージの次の引数に項目を指定します。
- 構文
- Integer = SLCTBOX( 種別, タイムアウト秒, メッセージ, 項目, 項目, 項目, … )
もしくは
Integer = SLCTBOX( 種別, タイムアウト秒, x, y, メッセージ, 項目, 項目, 項目, … )
- Integer = SLCTBOX( 種別, タイムアウト秒, メッセージ, 項目, 項目, 項目, … )
- 引数
- 種別 (#slctbox)必須
- SLCT_BTN
- ボタン
- SLCT_CHK
- チェックボックス
- SLCT_RDO
- ラジオボタン
- SLCT_CMB
- コンボボックス
- SLCT_LST
- リストボックス
- SLCT_STR
- 戻り値を項目名で返す(他の種別に付加して使用)
- SLCT_NUM
- 戻り値を位置数で返す(他の種別に付加して使用)
- タイムアウト (Integer)必須
- 指定時間(秒)を過ぎるとゼロを返す
- x, y (Integer = 中央)省略可
- 第3引数と第4引数が数値であれば X位置,Y位置指定と判断 (デフォルトは中央、 -1,-1にて前回位置)
- メッセージ (String = "")省略可
- 表示メッセージ
- 項目 (String = "",Array = "")省略可
- 選択項目名(配列変数で渡す事も可)
- 戻り値
- 1つ目が選択されたならばSLCT_1が返される
2つ目が選択されたならばSLCT_2が返される
:
SLCT_CHK(チェックボックス)選択時はビット演算して返される
SLCT_STR付加時は項目名で返される (複数選択時はタブにて結合される)
SLCT_NUM付加時は位置数で返される (複数選択時はタブにて結合される)
閉じボタンによる終了時は-1を返してくる(SLCT_CHKにてビットチェックする場合は注意)項目数は最大31まで (SLCT_STR、SLCT_NUMの場合は制限なし)
種別
SLCT_BTN(ボタン)

押されたボタンの値が返ります。1番目のボタンが押されたならSLCT_1(1)、2番目のボタンが押されたならSLCT_2(2)、3番目のボタンが押されたならSLCT_3(4)。\(n\)番目のボタンの値は\(2^{n-1}\)となります。
- 結果
SLCT_CHK(チェックボックス)

選択されたチェックボックスの論理和(OR)が返ります。1つも選択されなかった場合は0、1番目が選択されたならSLCT_1、2番目と3番目が選択されたならSLCT_2 OR SLCT_3(2+4=6)。
- 結果
SLCT_RDO(ラジオボタン)

選択された項目の値が返ります。戻り値はボタンと同じで、1番目のボタンが押されたならSLCT_1(1)、2番目のボタンが押されたならSLCT_2(2)、3番目のボタンが押されたならSLCT_3(4)。\(n\)番目のボタンの値は\(2^{n-1}\)となります。
- 結果
SLCT_CMB(コンボボックス)

選択された項目の値が返ります。戻り値はボタンと同じで、戻り値はボタンと同じで、1番目のボタンが押されたならSLCT_1(1)、2番目のボタンが押されたならSLCT_2(2)、3番目のボタンが押されたならSLCT_3(4)。\(n\)番目の項目の値は\(2^{n-1}\)となります。
ボタンとは違い項目を選択したあとに[OK]を押す必要があります。
- 結果
SLCT_LST(リストボックス)

選択されたチェックボックスの論理和(OR)が返ります。リストボックスが表示されたとき一番上の項目が破線で囲まれていますが、選択されているわけではないのでマウスや矢印キーで選択する必要があります。
1つも選択されなかった場合0、1番目が選択されたらSLCT_1(1)、2番目と3番目が選択されたらSLCT_2 OR SLCT_3(2+4=6)。Ctrlキーを押しながら項目を選択すると複数選択でき、Shiftキーを押しながらだと連続する項目を選択できます。
- 結果
SLCT_STR
戻り値は選択した項目名となります。複数選択された場合、タブで結合されます。項目を選択せず戻り値がない場合空文字列("")が返ります。
- 結果
戻り値はタブで区切られた文字列なので、SPLIT関数 (スクリプト関数)で項目を配列に格納し出力することも可能です。項目が選択されなかったときや1つしか選択されなくても動作します。
- 結果
SLCT_NUM
戻り値は選択した項目名となります。複数選択された場合、タブで結合されます。\(n\)番目の項目は\(n-1\)となります。こちらも戻り値がない場合、空文字列が返ります。
- 結果
項目の上限
セレクトボックスに標準できる項目の数は31個までです。32個以上の項目を設定したい場合は、種別にSLCT_STRまたはSLCT_NUMを付加します。
SLCTBOX関数の戻り値はInteger型は32ビットで1ビットは符号を表すので残りの31ビットでしか表すことができませんが、SLCT_STR、SLCT_NUMを付与すると戻り値はUString(文字列型)になるので32個以上でも表すことができます。
タイムアウト時間
第二引数に数値を指定するとタイムアウト時間を秒単位で設定することができます。タイムアウト時間を指定するとダイアログの下部に緑色のバーで残り時間が表示されます。バーが左端まで来るとダイアログが閉じ0を返します。

タイムアウト時間を表示
タイムアウト時間を指定したとき、カウントダウンタイマーをセレクトボックス下に吹き出しで表示します。関数の第一引数にタイムアウト時間を指定すると残り時間を秒単位とパーセンテージ表記で表示します。引数を指定しない場合はパーセンテージ表記のみです。タイマーはプログレスバーの減りに合わせて再計算されるので、タイムアウト時間が長いほど更新頻度は低くなります。
以下の関数をSLCTBOX関数の直前にスレッドで実行します。
progress関数に時間を指定しているので、秒単位とパーセンテージ表記で残り時間が表示されます。
progress関数に時間を指定していないので、パーセンテージ表記でのみ残り時間が表示されます。
プログラム実行例
UWSC.INIのDefaultFontを変更する
関連記事
- CLKITEM関数 (スクリプト関数)
- アイテムをクリックします。
- GETITEM関数 (スクリプト関数)
- キャプション文字やリスト等をすべて取得します。
- CHKBTN関数 (スクリプト関数)
- ボタン類(ボタン、チェックボックス、ラジオボタン)の状態を返します。
- GETCTLHND関数 (スクリプト関数)
- ボタン等、オブジェクトのハンドルを取得します。
