Utilisation des boîtes de dialogue modales de FireMonkey

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Conception d'applications FireMonkey


Cette rubrique explique comment créer, configurer et afficher une boîte de dialogue FireMonkey. Elle explique également comment gérer la valeur renvoyée par celle-ci en utilisant une méthode de rappel et comment libérer la mémoire allouée par la boîte de dialogue modale après sa fermeture.

Affichage d'une boîte de dialogue modale

Utilisez le code suivant pour afficher une boîte de dialogue modale dans une application FireMonkey :

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. Définissez une classe qui utilise l'interface TProc__1, et définissez une fonction pour gérer la fermeture de votre boîte de dialogue :
class TModalFormCallback : public TCppInterfacedObject<TProc__1<TModalResult> > {
public:
  TMyModalForm *dlg;
  TMyCurrentForm *MyCurrentForm;

  void __fastcall Invoke(TModalResult ModalResult) {
    // Do something.
  }
};
2. Passez ensuite une instance de cette classe à 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);
}

Libération de votre boîte de dialogue modale

Vous ne pouvez pas libérer la mémoire allouée pour votre fiche de boîte de dialogue modale au sein de la méthode qui gère la fermeture de cette fiche. Pour libérer votre fiche de boîte de dialogue modale, vous devez gérer son événement OnClose comme suit :

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

Voir aussi