A propos des Message Box [Résolu]

Signaler
Messages postés
259
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
22 novembre 2010
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
Bonjour,


Voilà j'ai une petite question vis à vis des Boite de dialogue façon Messagebox.


Voici sa syntaxe sous Delphi :
functionMessageBox(constText,Caption:PChar;Flags:Longint=MB_OK):Integer;


Personnellement, pour quitter et en sachant si le document est enregistré ou pas, j'utilise une variable boolean.
Si celle-ci est à True alors j'affiche le message de ce style :


Messagebox(Handle,'Votre document n''est pas enregistré, souhaitez-vous le faire ?','Document non enregistré', MB_YESNOCANCEL);
Ce qui me donne donc un message tout à fait correct mais sans panneau.


Mais j'ai trouvé ce style de message dernièrement :


Messagebox(Handle,'Votre document n''est pas enregistré, souhaitez-vous le faire ?','Document non enregistré', 51);
Et là j'ai un panneau superbe avec un mt_warning + les boutons Oui, Non et Annuler.
Donc en sorte, un Messagebox plus court plus facile à retenir SI on utilise toujours la même chose, et en prime avec un panneau.


Donc d'ou vient ce 51


J'ai cherché dans l'aide, chaque ID à une valeur bien précise allant de 1 à 7.
Donc si je prend 5 et 1 ca me donne ces deux boutons :



Valeur            Valeur numérique     Signification

IDIGNORE                 5                     L'utilisateur a choisi le bouton Ignorer.
IDOK                          1                     L'utilisateur a choisi le bouton OK.


Mais ce qui pour moi ne me donne que deux boutons, donc je ne comprend pas comment avec juste de nombre on peut avoir autant de précision dans le panneau.


Pourriez-vous éclaire ma lanterne s'il vous plait


Merci d'avance


@+

3 réponses

Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
4
Salut,


En fait :
MessageBox(Handle,
           'Votre document n''est pas enregistré, souhaitez-vous le faire ?',
           'Document non enregistré',
           51);


peut s'écrire :
MessageBox(Handle,
           'Votre document n''est pas enregistré, souhaitez-vous le faire ?',
           'Document non enregistré',
           MB_YESNOCANCEL or MB_ICONEXCLAMATION);


ou encore, ce qui explique mieux le "51" :
MessageBox(Handle,
           'Votre document n''est pas enregistré, souhaitez-vous le faire ?',
           'Document non enregistré',
           $00000003 or $00000030);


En effet :
$00000003 or $00000030 = $00000033
ce qui donne en décimal :
3 or 48 = 51


Se reporter à Windows.pas et l'aide en ligne pour complément d'information.


Bonne prog'

japee
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
32
beurk ...

if MessageDlg('voulez vous sauver votre travail ?', mtConfirmation, [mbYes,mbNo],0) = mrYes then
   ....SaveToFile(FileName);
Messages postés
163
Date d'inscription
dimanche 20 octobre 2002
Statut
Membre
Dernière intervention
31 juillet 2008

avec un nombre tu peux etre tres precis, si tu prends que des exp de 2 y'a qu'une maniere de retrouver une combinaison, exemple

1 -> affiche boutton ok
2 -> affiche boutton cancel
4 -> bip
8 -> affiche boutton 1
16 ->affiche boutton 2
32->affiche boutton 3
64->....
128->

maintenant si tu me donnes 51 y'a qu'une maniere de la faire, c'est 32+16+2+1
soit :  boutton 3+ boutton 2 + boutton cancel + boutton ok
exyacc