Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS DELPHI F.A.Q DELPHI TUTORIELS DELPHI LIVRES COMPOSANTS SOURCES DEFI TELECHARGEZ DELPHI TV

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

Date de publication : 2 juin 2002 , Date de mise à jour : 2 juin 2002

Par Alexandre TRANCHANT (http://alexandre.tranchant.info/)
 


Un logiciel qui crée automatiquement le code d'une boîte de dialogue
Comment créer une boîte de Dialogue...
Ci-dessous, vous trouverez quelques exemples de codes pour des boîtes de dialogues...
Le mot de la fin...


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 2 ou 3 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'ensembles de boutons, les constantes des résultats, j'en perd 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 fort sympathique 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. Ca ne fait pas encore le café, mais cela accélère grandement le développement et m'évite de chercher longtemps dans l'aide. Vous trouverez sur la droite, un lien vers une capture d'écran.

Si ce freeware vous intéresse, vous pouvez télécharger l'exécutable, et le code source (au format zip).


Comment créer une boîte de Dialogue...

Les boîtes de dialogues se créent essentiellement avec la fonction MessageDlg
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;
                                  HelpCtx: Longint): Word;
Une boîte de dialogue est donc constitué 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ère. Il s'agit en fait du message ou de la question qui seront posés à l'utilisateur.

Le type de la boîte de dialogue.

Il existe cinq type de boîtes de dialogue :

Copie d'écran TMsgDlgType Type de message
mtWarning Le message d'avetissement
mtError Le message d'erreur
mtConfirmation Le message de confirmation
mtInformation Le message d'interrogation
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
mbAbort mrAbort
mbHelp mrHelp
mbCancel mrCancel
mbIgnore mrIgnore
mbNo mrNo
mbNoTOALl mrNoTOALl
mbOk mrOk
mbYes mrYes
mbYesToAll mrYesToAll
mbRetry mrRetry
mbAll mrAll
Par exemple, pour afficher les boutons Ok et Cancel, le code sera donc :
[mbOk,mbCancel]
Comment savoir sur quel bouton l'utilisateur à cliqué ?

C'est très facile. Si vous regardez bien MessageDlg est une fonction qui renvoie une valeur de type WORD. C'est du charabia ? Pas de problème, Je peux vous expliquer. Si j'écris le code de la ligne suivante, la variable : "LaReponse" contiendra la valeur du résultat.
LaReponse:=MessageDlg('Impossible de parcourir la disquette dans A:\',
                        mtWarning, mbAbortRetryIgnore,0');
Ensuite, si l'utilisateur à cliqué par exemple sur le bouton , 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 testé, rien de plus simple.

  • Ouvrez un nouveau projet.
  • Ajouter un bouton à votre forme principale.
  • Dans l'inspecteur d'objet (Afficher le avec la touche F11), sélectionner l'onglet Evè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 :
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... Mais que le bouton 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 :
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...

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

Le mot de la fin...

Comme l'indique la petite boîte de dialogue ci-dessus, ce tutoriel est maintenant terminé. J'espère que celui-ci vous aura été utile. Si certaines étapes ne paraissent pas clair, ou ne sont pas assez détaillées selon votre goût, prévenez-moi par message privé sur le forum , et je vous répondrais. J'en profiterais également pour améliorer ce petit tutoriel. Car comme beaucoup de pédagogues le disent : "Ce qui paraît évident au tuteur, ne l'est jamais pour l'élève..."



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Responsables bénévoles de la rubrique Delphi : Nono40 et Pedro - Contacter par EMail :
Vos questions techniques : forum d'entraide Delphi - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.