ユーザーに入力を促したい時にいちいち新しいフォームを作るのは面倒である。
そんなときに利用するのがInputBoxやInputQuery関数。
手軽に入力用のダイアログを実装することが出来る。
似たような名前の関数だが、戻り値の型が違うため、
用途に合わせて使い分けないと正しい挙動を実現できない。
そこで、両者の違いを見てみよう
function InputBox(const ACaption,APrompt,ADefault:String):String; function InputQuery(const ACaption,APrompt: String; var Value:string): Boolean;
分かると思うが、第3引数となにより戻り値が違う。
InputBoxはString型なのに対して、InputQueryはBoolean型である。
InputBoxから解説していくと、第1引数でダイアログのタイトルを指定し、
第2引数でユーザーに対するメッセージを指定する。
そして、第3引数にはダイアログをキャンセルで閉じた時に返る値を指定する。
つまり、InputBoxではユーザーの操作にかかわらず、必ずString型のデータが返るようになっている。
次にInputQueryは、第2引数まではInputBoxと同じだが、
第3引数が違う。参照パラメータのこの引数にはユーザーが入力した値を受け取るための変数を指定する。
戻り値はOKを押すとTrue、そうでないならFalseが返る。
まとめると、InputBoxはキャンセルしてもデフォルトの値が返り、
InputQueryはユーザーがどうやってダイアログを閉じたかのかが分かる。
用途によって上手く使い分けよう。