3-2.ダイアログ

時に恐怖時に鬱陶しい「ジャンッ!」というあの音……。


ダイアログといえば、画面に突然出現する小さくてボタンが何個かしかないアレのことです。こういうの。
ダイアログのスクリーンショット「無題……そうこの絵のタイトルは“無題”だ……」

ダイアログを出すにはdialog命令を用います。分かりやすくて良いですね。

    dialog "message", type, "option"

"message" : 色々(タイプリスト参照)
type : ダイアログのタイプ(下記参照)
"option" : 色々(タイプリスト参照)

0   : 標準メッセージボックス + [OK]ボタン
1   : 警告メッセージボックス + [OK]ボタン
2   : 標準メッセージボックス + [はい][いいえ]ボタン
3   : 警告メッセージボックス + [はい][いいえ]ボタン
 "message" : ダイアログに表示するメッセージ
 "option"  : タイトル文字列

16  : ファイルOPEN(開く)ダイアログ
17  : ファイルSAVE(保存)ダイアログ
 "message" : 読み込み・保存するファイルの拡張子
 "option"  : 拡張子の補助的な説明

32  : カラー選択ダイアログ(固定色)
33  : カラー選択ダイアログ(RGBを自由に選択)
 "message" : 使いません
 "option"  : 使いません

64~: 拡張ダイアログ
 "message" : 場合によります
 "option"  : 場合によります

とりあえず今のところtypeは0~3くらいしか使わないでしょう。“標準メッセージボックス”は、ダイアログの隣にiだの!だの表示されていますが、これが“i”のもの。警告メッセージボックスは“!”なものです。


    dialog "ダイアログ", 0, "サンプル"

(素っ気ねぇ)実行するとダイアログが表示されます。見事に「OK」しかありませんね。これで良いんです。


    dialog "正直『HSP入門』は分かりづらい", 2, "嘘発見器"

こうすると「はい」「いいえ」という2つのボタンが現れてユーザーに選択を迫るわけですが、さて。どちらを選んだにしてもこれじゃ何も分かりません。ユーザーが何を選択したかは、システム変数statに入っています。

何か返り値があるとstatrefstrという非常に汎用的な変数であるこのstat。これは数値型です。

もしユーザーが「はい」を選んだならstatには6が、「いいえ」なら7が入っています。(ちなみに「OK」だけのダイアログでそれが押されたら1が入ります。)あとはif命令で判断してやればいいだけです。


    dialog "正直『HSP入門』は分かりづらい", 2, "嘘発見器"

    if stat = 6 {
        mes "この正直者めっ"
    } else {
        mes "大嘘つきがっ"
    }

(はは……)

他のタイプについて説明してみましょう。type16“ファイルOPENダイアログ”は、色んなプログラムで使われています。“開く”を押せば大抵このダイアログが出てきます。選ばれたファイルのパスはシステム変数refstrに入っています。また、statにも値が入ります。1なら正常に選ばれたことを示し、0ならキャンセルかエラーを示します。type17“ファイルSAVEダイアログ”も同じです。

これらのタイプだと、"message"と"option"の意味合いが違ってきます。"message"は読み込み・保存するファイルの拡張子を指定してやります。例えば"txt"だと、拡張子が"txt"、つまりテキストファイルだけが表示されるようになります。

32と33は滅多に使いません。色選択ダイアログとは、ペイントとかでも良くあるあれです。滅多にどころか僕は使ったことすら無いのでここでは説明を省きます。

64以降は拡張プラグインを用いた際に使用されます。こちらも説明を省きます。


Last Modified: 2008-08-15