Verwenden von modalen FireMonkey-Dialogfeldern

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey-Anwendungsdesign


In diesem Thema wird beschrieben, wie ein FireMonkey-Dialogfeld erstellt, konfiguriert und angezeigt wird. Außerdem wird die Behandlung des Rückgabewertes anhand einer Callback-Methode und die Freigabe des dem modalen Dialogfeld zugewiesenen Speichers nach dem Schließen des Dialogfeldes gezeigt.

Anzeigen eines modalen Dialogfeldes

Mit dem folgenden Quelltext können Sie in Ihrer FireMonkey-Anwendung ein modales Dialogfeld anzeigen:

Object Pascal:

procedure MyCurrentForm.MyButtonClick(Sender: TObject);
var
  dlg: TMyModalForm;
begin
  // Create an instance of a form.
  dlg := TMyModalForm.Create(nil);

  // Configure the form. For example, give it a display name.
  dlg.Caption := 'My Modal Dialog Box';

  // Show your dialog box and provide an anonymous method that handles the closing of your dialog box.
  dlg.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      // Do something.
    end
  );
end;
C++:
1. Definieren Sie eine Klasse, die das Interface TProc__1 übernimmt, und definieren Sie eine Funktion zur Behandlung des Schließens des Dialogfeldes:
class TModalFormCallback : public TCppInterfacedObject<TProc__1<TModalResult> > {
public:
  TMyModalForm *dlg;
  TMyCurrentForm *MyCurrentForm;

  void __fastcall Invoke(TModalResult ModalResult) {
    // Do something.
  }
};
2. Übergeben Sie dann eine Instanz dieser Klasse an ShowModal:
void __fastcall TMyCurrentForm::MyButtonClick(TObject *Sender) {
  // Create an instance of a form.
  TMyModalForm *dlg = new TMyModalForm(NULL);

  // Configure the form. For example, give it a display name.
  dlg->Caption = "My Modal Dialog Box";

  // Create and configure an instance of your callback method.
  TModalFormCallback* ModalFormCallback = new TModalFormCallback();
  ModalFormCallback->dlg = dlg;
  ModalFormCallback->MyCurrentForm = this;

  // Show your dialog box and provide an anonymous method that handles the closing of your dialog box.
  dlg->ShowModal(ModalFormCallback);
}

Freigeben des modalen Dialogfeldes

Sie können den dem modalen Dialogfeld zugewiesenen Speicher nicht in der Methode freigeben, die das Schließen des modalen Dialogfeldformulars behandelt. Zur Freigabe des modalen Dialogfeldformulars müssen Sie das Ereignis OnClose wie folgt behandeln:

Object Pascal:

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

Siehe auch