Dialog Examples/fr

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) français (fr) 日本語 (ja) polski (pl) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

Quelques boîtes de dialogue pratiques

Ci-dessous quelques boîtes de dialogue pratiques non incluses dans la palette de composant :

  • procedure ShowMessage (const Msg: string);
  • function MessageBox (Text, Caption : PChar; Flags: Word): Integer;
  • function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
  • function InputBox (const ACaption, APrompt, ADefault: string); string;
  • function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;
  • function PasswordBox(const ACaption, APrompt : String) : String;

Chacun de ces composants affiche une petite fenêtre contenant quelques informations et demande une réponse à l'utilisateur : d'appuyer sur un bouton, d'entrer un texte ou les deux. Le développeur n'a que peu de contrôle sur le format, la taille ou la position de ces boîtes de dialogue, mais peut influer sur leur contenu textuel.
La raison pour laquelle il y a tant d'alternatives différentes , et de permettre différentes méthodes d'appel de composant et de recevoir des informations en retour depuis une procédure ou une fonction.

Message Dialogs

Message dialogs affiche un message et attend qu'une touche soit appuyée ou un double-clic de la souris.

ShowMessage

Procedure ShowMessage (const Msg: string);

{ Déclarée dans Dialogs.pp }

La boîte de dialogue renvoyant un message la plus simple : elle prend une simple chaîne de caractères en paramètre, l'affiche dans une fenêtre stéréotypée, et attend un clic de souris ou une touche appuyée avec de continuer le programme.
C'est un appel de procédure modal, tant que le bouton OK n'est pas cliqué ou validé par entrée la fenêtre reste en avant plan et garde le focus, interdisant tout autre manipulation dans le programme.

Exemple :

 Program LazMessage;
 Uses Dialogs;
 begin
   ShowMessage ('C''est un message de Lazarus.')
 end.

MessageBox

Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer;

{ Défini dans  Forms.pp comme une partie de TApplication; par conséquent doit être appelé par
  Application.Messagebox () ou en utilisant la construction 'with Application do ...'}

Paramètres :

  • Text : la chaîne de caractères qui est affichée dans la boîte de dialogue ;
  • Caption : la chaîne de caractère affiché dans la barre de titre de la boîte de dialogue ;
  • Flags : longint – une constante qui peut définir le contenu et le comportement de la boîte de dialogue, par exemple MB_ABORTRETRYIGNORE + MB_ICONQUESTION fera en sorte que le programme affiche l'icône d'un point d'interrogation dans la boîte de dialogue (?) accompagné de trois boutons : ABORT RETRY IGNORE.

La fonction renvoie un entier correspondant au bouton appuyé ; cette valeur peut être déterminée en faisant référence aux constantes [IDOK..IDHELP]

Cette fonction peut être appelée en tant que procédure (ie comme 'MessageBox()' au lieu de 'Variable := MessageBox()' comme on le ferait normalement pour une appel de fonction – voir exemple ci-dessous)

Exemple :

 Uses Forms, Dialogs, LCLType;
 
 Procedure DisplayMessageBox;
 var reply, boxstyle: integer;
 begin
     with application do
     begin
       boxstyle :=  MB_ICONQUESTION + MB_YESNO;
       reply :=  MessageBox ('Appuyez sur un bouton', 'MessageBoxDemo', boxstyle);
       if reply = IDYES then MessageBox ('Oui', 'Répondre',MB_ICONINFORMATION)
       else MessageBox ('Non', 'Répondre', MB_ICONHAND);
     end;
 end;
MessageBoxDemo.png
ReplyYes.png

MessageDLG

function MessageDlg(const aMsg: string; DlgType: TMsgDlgType; 
                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; 
                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;

Il existe deux versions de cette fonction, si vous omettez de renseigner 'Caption', ce sera la première fonction qui sera appelée et 'Caption' sera vide dans la boîte de dialogue.

C'est la plus complète et la plus aboutie des fonctions d'appel de boîte de dialogue, elle autorise au programmeur un contrôle maximal sur l'apparence de la boîte. Les paramètres définissent le type de boîte et son icône via une constante entière, et les boutons peuvent être spécifié via [mbRetry, mbIgnore, mbAbort, mbCancel]. Le paramètre HelpCtx n'est pas encore implémenté et doit être initialisé à zéro. La valeur de retour de cette fonction et la valeur correspondante au bouton appuyé, exprimée par un entier (voir les définitions plus bas, [mrNone..mrAll]).

Exemple :

 Uses forms, dialogs, lcltype, controls;
 
 procedure TryMessageDlg;
 begin
   if MessageDlg ('Question', 'Souhaitez-vous l''exécuter ?', mtConfirmation, 
                  [mbYes, mbNo, mbIgnore],0) = mrYes
   then { Exécuter la suite du programme};
 end;
Question.png

Boîtes de dialogue de texte

InputBox

Boîte de dialogue de texte : affiche un message et attend que l'utilisateur entre une information sous forme de texte.

Function InputBox(const ACaption, APrompt, ADefault : String) : String;

Affiche une boîte de dialogue avec le titre et le message de sollicitation définis , et s'attend à ce que l'utilisateur entre un texte dans la boîte de dialogue. Une chaîne de caractère par défaut, peut être rentrée optionnellement. La chaîne de caractères entrée par l'utilisateur ou par défaut est retournée comme résultat de la fonction.

Exemple :

 Uses forms, lcltype, dialogs, controls;
 
 procedure TryInputBox;
 var userstring: string;
 begin
   userstring := InputBox ('Get some text input', 
                          'Please type in some   information', 'Some sample text');
   ShowMessage (userstring)
 end;

InputQuery

Function InputQuery(const ACaption, APrompt : String;
                    MaskInput : Boolean; var Value : String) : Boolean;
Function InputQuery(const ACaption, APrompt : String;
                    var Value : String) : Boolean;

Deux versions de cette fonction qui affiche un message de sollicitation et s'attend à une entrée par l'utilisateur de données textuelles; la première inclue un paramètre booléen MaskInput qui détermine si l'entrée de l'utilisateur est masquée par des astérisques dans la boîte de saisie du texte (comme pendant l'entrée d'un mot de passe ), tandis que la seconde omet cette propriété. Le texte entré par l'utilisateurest retourné dans le paramètre variable 'Value'; le résultat de fonction est un booléen qui retourne TRUE si le bouton OK était appuyé , ou FALSE si la boîte de dialogue était fermée par n'importe quel autre mécanisme (comme cliquer sur l'icône 'Close' sur la barre supérieure de titre ). Omettre le paramètre MaskInput est équivalent à le paramétrer à FALSE.

Exemple :

 Uses forms, lcltype, dialogs, controls;
 
 procedure TryInputQuery;
 var QueryResult: boolean;
   userstring: string;
 begin
   if InputQuery ('Question', 'Type in some data', TRUE, userstring)
   then ShowMessage (userstring)
   else 
   begin
     InputQuery ('Don''t be silly', 'Please try again', userstring);
     ShowMessage (userstring)
   end
 end;
MessageDlgQuestion.png
DontBeSillly.png

PasswordBox

Function PasswordBox(const ACaption, APrompt : String) : String;

Se comporte similairement à la fonction InputQuery avec MaskInput = TRUE; la différence est que le mot de passe qui a été saisi est retourné comme résultat de la fonction (comme InputBox).

Constantes et types utilisés dans des dialogues de message

Plusieurs constantes et types appropriés pour l'usage avec les boites de dialogue sont prédéfinis dans la bibliothèque LCL :


Constantes de nombre entier pour définir les types de boutons et les icônes pour l'affichage dans MessageBox

const { Déclaré dans LCLType.pp }
 MB_OK = $00000000;
 MB_OKCANCEL = $00000001;
 MB_ABORTRETRYIGNORE = $00000002;
 MB_YESNOCANCEL = $00000003;
 MB_YESNO = $00000004;
 MB_RETRYCANCEL = $00000005;
 
 
 MB_ICONHAND = $00000010;
 MB_ICONQUESTION = $00000020;
 MB_ICONEXCLAMATION = $00000030;
 MB_ICONASTERICK = $00000040;
 MB_ICONWARNING = MB_ICONEXCLAMATION;
 MB_ICONERROR = MB_ICONHAND;
 MB_ICONINFORMATION = MB_ICONASTERICK;

Constantes de nombre entier définissant la valeur de retour de MessageBox selon quel bouton a été appuyé

 IDOK = 1; 	ID_OK = IDOK;
 IDCANCEL = 2;	ID_CANCEL = IDCANCEL;
 IDABORT = 3;	ID_ABORT = IDABORT;
 IDRETRY = 4;	ID_RETRY = IDRETRY;
 IDIGNORE = 5;	ID_IGNORE = IDIGNORE;
 IDYES = 6;	ID_YES = IDYES;
 IDNO = 7;	ID_NO = IDNO;
 IDCLOSE = 8;	ID_CLOSE = IDCLOSE;
 IDHELP = 9;	ID_HELP = IDHELP;

Défini si le premier, le deuxième ou le troisième bouton est celui par défaut

 MB_DEFBUTTON1 = $00000000;
 MB_DEFBUTTON2 = $00000100;
 MB_DEFBUTTON3 = $00000200;
 MB_DEFBUTTON4 = $00000300;

Le paramètre drapeaux de MessageBox est construit en ajoutant une constante de bouton [MB_OK..MB_RETRYCANCEL], une constante facultative d'icône [MB_ICONHAND..MB_ICONINFORMATION] et une constante facultative de bouton par défaut [MB_DEFBUTTON1..MB_DEFBUTTON3]

Ce qui est écrit dans Dialogs.pp pour l'utilisation dans MessageDlg, qui a besoin des paramètres Atype de type TMsgDlgType et AButtons de type TMSgDlgButtons :

 { Déclaré dans Dialogs.pp }
 type
  TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
                    mtCustom);
  TMsgDlgBtn     = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
                   mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
  TMsgDlgButtons = set of TMsgDlgBtn;
  
 
 const
  mbYesNoCancel = [mbYes, mbNo, mbCancel];
  mbOKCancel = [mbOK, mbCancel];
  mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
  
 
  MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (
   bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,
    bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose
   );
 
 
  BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (
    mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,
    mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll
    );
 
 
 { Déclaré dans Controls.pp }
 const
  mrNone = 0;
  mrOK = mrNone + 1;
  mrCancel = mrNone + 2;
  mrAbort = mrNone + 3;
  mrRetry = mrNone + 4;
  mrIgnore = mrNone + 5;
  mrYes = mrNone + 6;
  mrNo = mrNone + 7;
  mrAll = mrNone + 8;
  mrNoToAll = mrNone + 9;
  mrYesToAll = mrNone + 10;
  mrLast = mrYesToAll;

This page has been imported from the epikwiki version.