22 Voix

Delphi/Lazarus: Résultat de ShowModal

Conseil de Stefan Trost | 28/02/2024 à 22:36

ShowModal affiche une fenêtre et attend qu'elle soit fermée. Jusqu'à la fermeture, vous ne pouvez interagir avec aucune autre fenêtre de l'application. Ce que beaucoup ne savent pas: vous pouvez définir une valeur de résultat à la fermeture du formulaire ShowModal, que vous pouvez ensuite évaluer confortablement dans votre programme.

Par exemple pour vérifier sur quel bouton l'utilisateur a cliqué.

Boutons de Exemple

Jetons un coup d'œil à un exemple simple démontrant cela. Notre premier formulaire est Form1 et nous souhaitons afficher une deuxième fenêtre modale (Form2) en utilisant ShowModal.

Sur Form2, nous avons placé deux boutons auxquels nous avons attribué le code suivant:

procedure TForm2.Button1Click(Sender: TObject);
begin
  ModalResult := 1;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  ModalResult := 2;
end;

Sur Form1, nous affichons ce formulaire avec ShowModal:

procedure TForm1.Button1Click(Sender: TObject);
var
  k: integer;
begin
  // Example 1
  k := Form2.ShowModal;
  if k = 1 then ShowMessage('Le bouton 1 a été cliqué!');
  if k = 2 then ShowMessage('Le bouton 2 a été cliqué!');

  // Example 2
  if Form2.ShowModal = 1 then begin
    ShowMessage('Le bouton 1 a été cliqué!');
  end;
end;

La valeur que nous avons attribuée à ModalResult dans les procédures ButtonClick est le résultat de l'appel ShowModal. En même temps que nous définissons ModalResult sur une valeur autre que zéro, le formulaire se ferme automatiquement.

Dans l'exemple, dans le code de Form2, nous définissons ModalResult à 1 avec Button1 et à 2 avec Button2. Ainsi, nous pouvons vérifier dans le code de Form1 sur quel bouton a été cliqué sur Form2 et nous pouvons afficher les messages correspondants pour notre exemple.

ModalResult Buttons

A côté de cette méthode, il est également possible d'appliquer directement l'un des ModalResults standards à nos boutons. Pour cela, les boutons ont la propriété "ModalResult" que l'on peut définir (par exemple via l'inspecteur d'objets) à mrOK, mrCancel, mrYes ou mrNo à titre d'exemple.

Si nous avons préparé un bouton de cette manière, nous pouvons récupérer le résultat de la manière suivante:

if Form2.ShowModal = mrOk then begin
   ShowMessage('Le bouton avec mrOk a été cliqué!');
end;

Ainsi, si un utilisateur a cliqué sur le bouton avec la propriété ModalResult = mrOK, le formulaire correspondant se ferme automatiquement et nous renvoie automatiquement mrOk comme résultat. Et cela sans que nous ayons à modifier d'autres propriétés du bouton ni à attribuer un événement ou un code au bouton. De plus, nous pouvons voir à partir de la valeur de retour de ShowModal sur quel bouton l'utilisateur a cliqué.

RépondrePositifNégatif

Sur l’Auteur

AvatarVous pouvez trouver des logiciels de Stefan Trost sur fr.sttmedia.com. Avez-vous besoin d'un logiciel personnalisé selon vos propres besoins? Écrivez-nous: fr.sttmedia.com/contact
Voir Profil

 

Sujets Connexes

VirtualBox: Changer la Date et l'Heure

Tutoriel | 10 Commentaires

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.