L’art et la manière de créer des boîtes de messages rapidement

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Un logiciel qui crée automatiquement le code d'une boîte de dialogue

Je suis peut-être le seul dans ce cas, mais j’ai une très mauvaise mémoire concernant les noms des constantes… Créer une boîte de dialogue est certes un jeu d’enfant. Mais à chaque fois, je passe deux ou trois minutes à vérifier les noms des constantes pour afficher tel ou tel bouton… En effet, dès que je réalise une boîte de dialogue, je suis obligé de lancer l’aide pour me souvenir de ces fameux noms de constantes. Entre les constantes de boutons, les constantes d’ensemble de boutons, les constantes des résultats, j’en perds rapidement mon latin. De plus, je passe constamment d’un langage de programmation à un autre, j’oublie toujours des noms de fonctions.

C’est pourquoi, j’ai réalisé un petit programme qui génère automatiquement le code d’une boîte de message, le stocke dans le presse-papier et qui indique la valeur de la constante renvoyée. Ça ne fait pas encore le café, mais cela accélère grandement le développement et m’évite de chercher longtemps dans l’aide.

Image non disponible

Comment créer une boîte de dialogue…

Sans cet outil, les boîtes de dialogues se créent facilement avec la fonction MessageDlg :

 
Sélectionnez
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;
                                  HelpCtx: Longint): Word;

Une boîte de dialogue est constituée de cinq informations :

  1. Le message ;
  2. Le type de la boîte de dialogue ;
  3. Les boutons de la boîte de dialogue ;
  4. La référence à l’aide contextuelle ;
  5. Le résultat retourné par la fonction.

Le message

Le message n’est qu’une simple et banale chaîne de caractères. Il s’agit en fait du message ou de la question qui sera posée à l’utilisateur.

Le type de la boîte de dialogue

Il existe cinq types de boîtes de dialogue :

Copie d’écran

TMsgDlgType

Type de message

Image non disponible

mtWarning

Le message d'avertissement

Image non disponible

mtError

Le message d'erreur

Image non disponible

mtConfirmation

Le message de confirmation

Image non disponible

mtInformation

Le message d'interrogation

Image non disponible

mtCustom

Le simple message

Les boutons de la boîte de dialogue et la réponse envoyée…

Copie d'écran

TMsgDlgButtons

Réponse du bouton

Image non disponible

mbAbort

mrAbort

Image non disponible

mbHelp

mrHelp

Image non disponible

mbCancel

mrCancel

Image non disponible

mbIgnore

mrIgnore

Image non disponible

mbNo

mrNo

Image non disponible

mbNoTOALl

mrNoTOALl

Image non disponible

mbOk

mrOk

Image non disponible

mbYes

mrYes

Image non disponible

mbYesToAll

mrYesToAll

Image non disponible

mbRetry

mrRetry

Image non disponible

mbAll

mrAll

Par exemple, pour afficher les boutons « OK » et « Cancel », le code sera donc :

 
Sélectionnez
[mbOk,mbCancel]

Comment savoir sur quel bouton l’utilisateur a cliqué ?

Si vous regardez bien MessageDlg est une fonction qui renvoie une valeur de type WORD. En somme, si j’écris le code de la ligne suivante, la variable : « laReponse » contiendra la valeur du résultat.

 
Sélectionnez
laReponse:=MessageDlg('Impossible de parcourir la disquette dans A:\',
                        mtWarning, mbAbortRetryIgnore,0');

Ensuite, si l’utilisateur a cliqué par exemple sur le bouton Image non disponible, la valeur sera donc mrYes. Dans le tableau ci-dessus, vous trouverez toutes les correspondances… Rien ne vaut un petit exemple ! Alors, voici un petit code qui pourra vous être utile. Si vous souhaitez le tester, rien de plus simple.

  • Ouvrez un nouveau projet.
  • Ajoutez un bouton à votre forme principale.
  • Dans l’inspecteur d’objets (affichez-le avec la touche F11), sélectionnez l’onglet Évènement.
  • Dans le champ OnClick, double-cliquez !
  • Vous arrivez dans le code de votre application.
  • Dans la procédure où vous êtes, recopiez le code suivant :
 
Sélectionnez
procedure TForm1.Button1Click(Sender: TObject);
var Reponse: word;
begin
  Reponse:=MessageDlg('Sur quel bouton mon utilisateur a-t-il cliqué ?',
             mtConfirmation,  // icone
             [mbYes,mbNo,mbOk,mbAbort,mbRetry,mbIgnore,mbAll,mbNoToAll,mbYesToAll]
               //liste de boutons
             ,0//aide
           );
  Case Reponse of
    mrYes     :showmessage('L''utilisateur a cliqué sur Oui. Résultat:mrYES');
    mrNo      :showmessage('L''utilisateur a cliqué sur Non. Résultat:mrNo');
    mrOk      :showmessage('L''utilisateur a cliqué sur OK . Résultat:mrOk');
    mrAbort   :showmessage('L''utilisateur a cliqué sur Abandonner.Résultat:mrAbort');
    mrRetry   :showmessage('L''utilisateur a cliqué sur Réessayer.Résultat:mrRetry');
    mrIgnore  :showmessage('L''utilisateur a cliqué sur Ignorer.Résultat:mrIgnore');
    mrAll     :showmessage('L''utilisateur a cliqué sur Tous.Résultat:mrAll');
    mrNoToAll :showmessage('L''utilisateur a cliqué sur Non pour tout.Résultat:mrNoToAll');
    mrYesToAll:showmessage('L''utilisateur a cliqué sur Oui pour tout.Résultat:mrYESToAll');
  else
    showmessage('L''utilisateur a cliqué sur la croix en haut à droite.Résultat:mrCancel');
  end;
end;

Si vous avez été attentif, vous remarquerez que ce code permet d’obtenir une réponse mrCancel… Pourtant le bouton Image non disponible n’est pas présent sur la fiche…

Eh bien, voici une remarque importante : quand l’utilisateur clique sur la croix en haut à droite de la fenêtre, la réponse envoyée par la boîte de dialogue est mrCancel.

Les ensembles prédéfinis de boutons…

Mais vous remarquerez qu’on utilise souvent les mêmes couples de boutons. Par exemple, on utilise souvent (Oui, Non) ou (OK, Annuler). C’est pourquoi, Delphi propose à l’utilisateur cinq constantes équivalentes à un ensemble de valeur. En voici la liste :

 
Sélectionnez
const

mbYesNoCancel = [mbYes, mbNo, mbCancel];
mbYesAllNoAllCancel = [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel];
mbOKCancel = [mbOK, mbCancel];
mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
mbAbortIgnore = [mbAbort, mbIgnore];

Ci-dessous, vous trouverez quelques exemples de codes pour des boîtes de dialogues…

Image non disponible
 
Sélectionnez
Result:=MessageDlg('Voulez-vous enregistrer les modifications ?', mtConfirmation, mbYesNoCancel, 0');
Image non disponible
 
Sélectionnez
Result:=MessageDlg('Votre projet vient de planter', mtError, [mbAbort], 0');
Image non disponible
 
Sélectionnez
Result:= MessageDlg('Impossible de parcourir la disquette dans A:\', mtWarning, mbAbortRetryIgnore,0');
Image non disponible
 
Sélectionnez
Result:= MessageDlg('Ce tutoriel est maintenant terminé...', mtInformation, [mbOk],0');

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2020 Alexandre TRANCHANT . Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.