このブログはLazarus(FreePascal)アドベントカレンダー7日目の記事です。
7日目はLazarusでファイルを開く・保存ダイアログやメッセージボックスを表示する方法を。
コモンダイアログを表示する
Lazarusは、Delphiと同様、LCLに標準ダイアログを表示することができるクラスが揃っています。いちおうコンポーネント一覧にありますが、フォームに貼り付けて使うのも面倒ですし、普通にクラスを初期化して使うと楽です。
procedure TMainForm.ButtonClick(Sender: TObject); var OFD: TOpenDialog; begin OFD := TOpenDialog.Create(Self); try OFD.Filter:='EXE File|*.exe'; if OFD.Execute then Path.Text:=OFD.FileName; finally OFD.Free; end; end;
なお、「これってなんのダイアログだっけ・・・?」と思ったら、コンポーネントをフォームに貼り付けてダブルクリックすると、ダイアログのテストができます。これはたしかDelphiもおなじでしたね。
TCalcuratorDialog?
なお、コンポーネントパレットを見るとTCalculatorDialog
などという見慣れない名前のダイアログがいくつか見つかります。
ソースコードを見ている感じWindows APIを呼んでどうにかしている様子はないため、ダイアログを作る際の参考になるかもしれません。
単純なメッセージボックスを表示する
また、単純なメッセージボックス、確認ダイアログなどは、Dialogs
ユニットのMessageDlg
またはQuestionDlg
関数を使います。
{ QuestionDlg } Result:= QuestionDlg('caption', 'message', mtConfirmation, [mrYes, mrNo], 0); { MessageDlg } MessageDlg('caption', 'message', mtInformation, [mbOK], 0);
第三引数Buttonsが要求する値が、QuestionDlg
はarray of const
(mr○○の定数配列)、MessageDlg
はTMsgDlgButtons
(mb○○の定数配列)と微妙に違うので注意。
単純なメッセージボックスを「作る」
なお、ダイアログをただちに表示するわけでなく、TFormオブジェクトとして取得し、いつでも表示できるようにする という方法もあります。
CreateMessageDialog
というメソッドを使用します。
これを使えば上記MessageDlgと同等のダイアログをオブジェクトとして取得することができます。たとえばおなじダイアログを何度も表示したり、フォントや表示位置を調整したいときには便利です。