IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Boîte de dialogue à trois boutons


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Boîte de dialogue à trois boutons
    Bonjour à toutes et à tous,

    je souhaite réaliser une boîte de dialogue comme ci-dessous :

    Nom : Boite_Sortie.jpg
Affichages : 342
Taille : 22,5 Ko

    Comment feriez-vous ?

    • Création d'une "form",
    • Utilisation de "DefaultPromptDialog", mais je ne vois pas trop comment faire,
    • ...

    Cordialement.

    Pierre.

  2. #2
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 740
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 740
    Par défaut
    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

  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    ... Personnellement, je ferais une form. ...
    Pour l'instant, c'est ce que j'ai fait. Ça fonctionne bien.

    Mais j'aurais bien aimé savoir s'il y avait quelque chose à tirer de "DefaultPromptDialog" ou autre.

    Cordialement.

    Pierre.

  4. #4
    Rédacteur
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 257
    Par défaut
    Bonjour ChPr,

    Moi je ferais comme ça :

    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;
    Ça donne cette boite de dialogue :

    Nom : BoiteDialog.jpg
Affichages : 300
Taille : 16,9 Ko

    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 :
    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;
    Ça donne cette boite de dialogue :

    Nom : BoiteDialog1.jpg
Affichages : 295
Taille : 17,2 Ko

    Espérant avoir pu t'aider.

  5. #5
    Rédacteur
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 257
    Par défaut
    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 :

    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;
    Cordialement.

  6. #6
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    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.

Discussions similaires

  1. Boîte de dialogue 3 boutons
    Par Taiby dans le forum ImageJ
    Réponses: 4
    Dernier message: 04/03/2015, 13h28
  2. Réponses: 14
    Dernier message: 21/01/2009, 15h48
  3. Boutons de boîte de dialogue
    Par Leila59 dans le forum IHM
    Réponses: 4
    Dernier message: 26/06/2008, 15h21
  4. Boîte de dialogue avec 2 boutons
    Par mademoizel dans le forum ASP
    Réponses: 5
    Dernier message: 16/02/2007, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo