Sign in Join
Wiki copytemporary

Dialog Examples/fr

Deutsch · English · Español · Français · Polski · Slovenčina · Suomi · Русский · 中文(中国) · 日本語

Quelques boîtes de dialogue pratiques

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

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

pascal
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 :

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

MessageBox

pascal
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 :

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 :

pascal
 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;

MessageDLG

pascal
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 :

pascal
 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;

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.

pascal
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 :

pascal
 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

pascal
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 :

pascal
 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;

PasswordBox

pascal
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

pascal
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é

pascal
 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

pascal
 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 :

pascal
 { 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.


From the Free Pascal wiki, page "Dialog Examples/fr", as it stood on 2020-02-13 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.