FireMonkey モーダル ダイアログ ボックスの使用

提供: RAD Studio
移動先: 案内検索

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;
}

関連項目