FireMonkey モーダル ダイアログ ボックスの使用
このトピックでは、FireMonkey ダイアログ ボックスを作成し、構成し、表示する方法を説明します。また、コールバック メソッドを使用して戻り値を処理する方法や、モーダル ダイアログ ボックスによって割り当てられたメモリをモーダル ダイアログ ボックスが閉じた後で解放する方法も説明します。
モーダル ダイアログ ボックスの表示
以下のコードを使用すると、FireMonkey アプリケーションでモーダル ダイアログ ボックスを表示することができます。
Delphi の場合:
procedure MyCurrentForm.MyButtonClick(Sender: TObject);
var
dlg: TMyModalForm;
begin
// フォームのインスタンスを作成する
dlg := TMyModalForm.Create(nil);
// フォームを構成する。表示名の設定など
dlg.Caption := 'モーダル ダイアログ ボックス';
// ダイアログ ボックスを表示し、ダイアログ ボックスを閉じる処理を行う無名メソッドを渡す
dlg.ShowModal(
procedure(ModalResult: TModalResult)
begin
// 何らかの処理を実行
end
);
end;
C++ の場合:
- 1. TProc__1 インターフェイスを受け取るクラスを定義し、ダイアログ ボックスを閉じる処理を行う関数を定義します。
class TModalFormCallback : public TCppInterfacedObject<TProc__1<TModalResult> > {
public:
TMyModalForm *dlg;
TMyCurrentForm *MyCurrentForm;
void __fastcall Invoke(TModalResult ModalResult) {
// 何らかの処理を実行
}
};
- 2. その後、このクラスのインスタンスを
ShowModal
に渡します。
void __fastcall TMyCurrentForm::MyButtonClick(TObject *Sender) {
// フォームのインスタンスを作成する
TMyModalForm *dlg = new TMyModalForm(NULL);
// フォームを構成する。表示名の設定など
dlg->Caption = "モーダル ダイアログ ボックス";
// コールバック メソッドのインスタンスを作成して構成する
TModalFormCallback* ModalFormCallback = new TModalFormCallback();
ModalFormCallback->dlg = dlg;
ModalFormCallback->MyCurrentForm = this;
// ダイアログ ボックスを表示し、ダイアログ ボックスを閉じる処理を行う無名メソッドを渡す
dlg->ShowModal(ModalFormCallback);
}
モーダル ダイアログ ボックスの解放
モーダル ダイアログ ボックス フォームを閉じる処理を行うメソッドの中で、モーダル ダイアログ ボックス フォーム用に割り当てられたメモリを解放することはできません。モーダル ダイアログ ボックス フォームを解放するには、フォームの OnClose イベントを次のように処理する必要があります。
Delphi の場合:
procedure TMyModalForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := TCloseAction.caFree;
end;
C++ の場合:
void __fastcall TMyModalForm::FormClose(TObject *Sender, TCloseAction *Action) {
Action = TCloseAction::caFree;
}