Bonjour à toutes et à tous,
je souhaite réaliser une boîte de dialogue comme ci-dessous :
Comment feriez-vous ?
- Création d'une "form",
- Utilisation de "DefaultPromptDialog", mais je ne vois pas trop comment faire,
- ...
Cordialement.
Pierre.
Bonjour à toutes et à tous,
je souhaite réaliser une boîte de dialogue comme ci-dessous :
Comment feriez-vous ?
- Création d'une "form",
- Utilisation de "DefaultPromptDialog", mais je ne vois pas trop comment faire,
- ...
Cordialement.
Pierre.
Bonjour,
Personnellement, je ferais une form. Je la rendrai le plus personnalisable possible (pour pouvoir l'utiliser à d'autres fins), et je créerai une fonction qui ouvre cette forme et récupère le bouton sélectionné.
JS
Bonjour ChPr,
Moi je ferais comme ça :
Ça donne cette boite de dialogue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure TForm1.Button1Click(Sender: TObject); var reply: integer; boxstyle: integer; begin with application do begin boxstyle:= MB_ICONWARNING + MB_YESNOCANCEL; reply:= MessageBox('Enregitrer les modifications du document "Sans nom 1" Vos modifications seront perdues si vous ne les enregistrez pas.','Enregistrer le document ?', boxstyle); begin if reply = IDYES then ShowMessage('C''est enregistré.') // À remplacer éventuellement par l'action qu'on veut else if reply = IDCANCEL then ShowMessage('C''est annulé.') // À remplacer éventuellement par l'action qu'on veut else if reply = IDNO then ShowMessage('Ce n''est pas enregistré.') // À remplacer éventuellement par l'action qu'on veut end; end; end;
Les boutons sont en anglais mais ça fonctionne bien et ça évite de passer par une forme.
Et il n'y a plus qu'à mettre les actions que tu veux attribuer à chaque bouton.
Enfin pour mettre les boutons en français, on remerciera chris37, voir la discussion:https://www.developpez.net/forums/d6...ons-dialogues/
Et le code ça donne ça :
Ça donne cette boite de dialogue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 procedure TForm1.Button1Click(Sender: TObject); var PODirectory: String; reply: integer; boxstyle: integer; begin PODirectory:='C:\lazarus\lcl\languages\'; TranslateUnitResourceStrings('LCLStrConsts',PODirectory+'lclstrconsts.%s.po','fr',''); with application do begin boxstyle:= MB_ICONWARNING + MB_YESNOCANCEL; reply:= MessageBox('Enregitrer les modifications du document "Sans nom 1" Vos modifications seront perdues si vous ne les enregistrez pas.','Enregistrer le document ?', boxstyle); begin if reply = IDYES then ShowMessage('C''est enregistré.') // A remplacer éventuellement par l'action qu'on veut else if reply = IDCANCEL then ShowMessage('C''est annulé.') // A remplacer éventuellement par l'action qu'on veut else if reply = IDNO then ShowMessage('Ce n''est pas enregistré.') // A remplacer éventuellement par l'action qu'on veut end; end; end;
Espérant avoir pu t'aider.
Bonjour ChPr,
Tu peux aussi peut-être optimiser le code que je t'ai donné dans mon post précédent en utilisant Case Of :
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 procedure TForm1.Button1Click(Sender: TObject); var PODirectory: String; reply: integer; boxstyle: integer; begin PODirectory:='C:\lazarus\lcl\languages\'; TranslateUnitResourceStrings('LCLStrConsts',PODirectory+'lclstrconsts.%s.po','fr',''); with application do begin boxstyle:= MB_ICONWARNING + MB_YESNOCANCEL; reply:= MessageBox('Enregitrer les modifications du document "Sans nom 1" Vos modifications seront perdues si vous ne les enregistrez pas.','Enregistrer le document ?', boxstyle); Case reply of IDYES : ShowMessage('C''est enregistré.'); // A remplacer éventuellement par l'action qu'on veut IDCANCEL : ShowMessage('C''est annulé.'); // A remplacer éventuellement par l'action qu'on veut IDNO : ShowMessage('Ce n''est pas enregistré.'); // A remplacer éventuellement par l'action qu'on veut end; end; end;
Merci à toi "Chrispi" pour cette solution et à "chris37" pour la traduction.
J'étais bloqué sur les noms de "enregistrer" et "ne pas enregistrer". Selon comment est posée la question, un "oui" et un "non" suffisent.
Mais dès lors, "MessageDlg" fait le même boulot que "MessageBox".
Cordialement.
Pierre.
Partager