今回はDelphi/400でInputBoxやInputQuery関数を使って
Windowsのインプットダイアログを使用するテクニックをご紹介いたします。
入力用のウィンドウを表示したい場合、
別途ダイアログ用フォームを作成しておき、ShowModalで表示・入力する方法がありますが、
簡易な入力であれば、Windowsで用意された標準のInputBoxをそのまま活用できます。
InputBoxの使い方、パラメータは次の通りです。
InputBox(ダイアログのタイトル, 入力説明ラベル, デフォルト値);
返却値にはインプットボックスで入力された値が戻りますので、
一行で入力ダイアログを実装できます。
//例)
// Edit1コンポーネントのTextプロパティをインプットボックスで設定する
Edit1.Text := InputBox('入力ダイアログ', '入力してください:', Edit1.Text);
これだけでダイアログ入力でEditコンポーネントに反映させることができます。
また、上の例ではEdit1.Textをデフォルト値にしていますが、
ブランクを含む任意の文字列を指定できます。
(注意事項としては、改行ができないので入力中にEnterを押すとOKされてしまいます。)
手軽に利用できるInputBoxですが、[キャンセル]や[×]ボタンが押されると
引数で指定されたデフォルト値が返ります。デフォルト値がブランクでない場合、
[キャンセル]と[OK]のどちらが選択されたか判別できません。
どちらのボタンかが押されたのかを知るにはInputQueryを使用します。
InputQueryは戻り値がBoolean型となっており、
[キャンセル]や[×]ボタンを選択するとFalse、[OK]ボタンを選択するとTrueを返します。
デフォルト値が参照渡し(var)の引数となっているため、
InputBoxと違って「Edit1.Text」のような値ではなく変数で渡す必要があります。
var
NewString: string;
ClickedOK: Boolean;
begin
// 初期値設定
NewString := 'MIGARO';
// ダイアログ表示
ClickedOK := InputQuery('文字列入力', '文字列を入力して下さい。', NewString);
// OKボタン選択時、Edit表示
if ClickedOK then
Edit1.Text := NewString;
end;
Delphi/400ではこうしたWindows標準機能を利用できますので、
実際のプログラミングでもご活用下さい。
(InputBox:ミガロ.情報マガジン「MIGARO News!!」Vol.180 2015年11月号より)
(InputQuery:ミガロ.情報マガジン「MIGARO News!!」Vol.074 2007年3月号より)