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

 Delphi Discussion :

Utilisation Message Dialogue


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Par défaut Utilisation Message Dialogue
    Bonjour.
    je travaille avec Delphi 7 Entreprise.

    Lorsque j'utilise MessageDlg tel que préconisé par son Help soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if MessageDlg('Bienvenue dans mon application Delphi.Quitter?',
      mtConfirmation,[mbYes,mbNo],0,mbYes)=mrYes then
      begin
        MessageDlg('Fin de l''application Delphi.',mtInformation,[mbOk],0);
        Close;
      end;
    end;
    end.
    Je reçois le Message trop de paramètres originaux.

    Quand je supprime le texte en rouge ça marche parfaitement, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if MessageDlg('Bienvenue dans mon application Delphi.Quitter?',
      mtConfirmation,[mbYes,mbNo],0)=mrYes then
      begin
        MessageDlg('Fin de l''application Delphi.',mtInformation,[mbOk],0);
        Close;
      end;
    end;
    end.
    D'autre part j'ai toujours par défault toujours le choix 'Oui',
    que je note [mbYes,mbNo] ou [mbNo,mbYes],
    ou je je mette 0 ou 1

    Comment avoir au choix le 'Oui' ou le 'Non' pour éviter des utilisations intempestives.

    Merci

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut
    Citation Envoyé par damene Voir le message
    Comment avoir au choix le 'Oui' ou le 'Non' pour éviter des utilisations intempestives.
    Pour ce faire, tu dois utiliser MessageBox (défini dans Windows.pas) au lieu de MessagDlg.

    @+ Claudius.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Par défaut
    Salut Cl@dius
    citation
    Pour ce faire, tu dois utiliser MessageBox (défini dans Windows.pas) au lieu de MessagDlg.
    Hélas je suis débutant et en utilisant l'exemple du help je reçois le message types incompatible HWND et String

    peux-tu me donner le code exact avec l'exemple de Message dialogue ci dessus?

    Merci

  4. #4
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut


    Ça ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBoxA(0,Pchar('Message ici...'),Pchar('Title'),MB_YESNO + 0 + MB_DEFBUTTON2);

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Par défaut
    merci Droïde Systeme7 pour la réponse.

    Je repose toujours la même question quel est le paramètre qui permet de mettre le 'oui' ou le 'non' (première ou deuxième valeur) valeur par défaut.

    Car même avec trois valeurs de choix (2 au lieu de 0) la valeur par défaut est la deuxième

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    J'avais fait un petit programme pour créer des MessagesBox ... Tu peux t'en inspirer pour faire tes propres messagesBox :

    Le bouton test permet de voir le résultat que ça va produire lors de l'exécution de la MessageBox
    Le bouton copier permet de copier en mémoire le code pour le coller dans l'application que tu développes.

    L'application se trouve ici

    Sinon, c'est le dernier paramètre qui définit le bouton par défaut. Moi j'utilise MessageBox ou lieu de MessageBoxA ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MessageBox(Handle,
    'message',
    'titre',
    MB_YESNO+MB_DEFBUTTON2);
    Voilà, en espérant t'avoir aidé
    A+

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 141
    Par défaut
    Salut damene,

    Citation Envoyé par damene Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if MessageDlg('Bienvenue dans mon application Delphi.Quitter?',
      mtConfirmation,[mbYes,mbNo],0,mbYes)=mrYes then
      begin
        MessageDlg('Fin de l''application Delphi.',mtInformation,[mbOk],0);
        Close;
      end;
    end;
    end.
    Je reçois le Message trop de paramètres originaux.
    J'ai copié/collé ton code, et chez moi ça compile (sous bds 2006), avec le comportement voulu (quand je remplace le dernier argument par "mbNo", c'est bien le bouton "Non" qui est sélectionné par défaut).

    C'est louche que ça ne marche pas chez toi.
    Tu as bien l'unité Dialogs dans tes uses? tu es sûr que tu n'accèdes pas à une autre fonction MessageDlg, dans une autre unité, qui n'aurait pas la version surchargée? Tu as regardé le code de l'unité Dialogs de ta version de la VCL pour vérifier si la fonction MessageDlg a bien les 2 versions surchargées?
    Pour la fonction MessageDlg, je chercherais plutôt dans cette direction.

    Sinon, la réponse de ero-sennin devrait te dépanner. Si tu as GExperts ou CnPack dans tes experts (je ne sais pas s'il existe des versions pour D7 enterprise?), ils proposent aussi des modules pour créer une boîte de Dialog avec une petite GUI de base.

    *LeGEC*

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Par défaut
    Salut.

    Citation LeGEC

    C'est louche que ça ne marche pas chez toi.
    Tu as bien l'unité Dialogs dans tes uses? tu es sûr que tu n'accèdes pas à une autre fonction MessageDlg, dans une autre unité, qui n'aurait pas la version surchargée? Tu as regardé le code de l'unité Dialogs de ta version de la VCL pour vérifier si la fonction MessageDlg a bien les 2 versions surchargées?
    Pour la fonction MessageDlg, je chercherais plutôt dans cette direction.
    J'ai bien l'unité Dialogs dans les Uses.
    Je n'ai qu'une unité et j'utilise une seule fois MessageDlg.

    Par contre je ne sais pas comment verifier le code de MessageDlg dans la VCL

    En tout état de cause toutes les explications que vous m'avez tous données : Cl@udius, Ero-Sennin, Droïde System7 ou leGec me règlent mon problème en utilisant le messageBox d'Evarisnea du 4/10/2008 qui me permet en plus de mettre un label dans le MessageBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TSupPaiement.BitBtn1Click(Sender: TObject);
    var rep : integer;
    begin
    rep:= MessageBox(Handle,Format('Etes-vous sûr de vouloir supprimer l''adhérent %s ?',[Nom.Caption]),
     'Avertissement ',(MB_YesNO or MB_ICONSTOP)+ MB_DEFBUTTON2 )) ;
     if (rep =IDOK) then// test si réponse OK
       Table1.Delete; // Suppression de l'enregistrement;
     end;
    Merci à tous.

  9. #9
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MB_OKCANCEL or MB_ICONSTOP or MB_DEFBUTTON2
    est une syntaxe plus propre.

    @+ Claudius

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Par défaut
    Ok Merci à tous

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Par défaut
    Salut. LeGEC

    Citation:
    C'est louche que ça ne marche pas chez toi.
    Tu as regardé le code de l'unité Dialogs de ta version de la VCL pour vérifier si la fonction MessageDlg a bien les 2 versions surchargées?
    Pour la fonction MessageDlg, je chercherais plutôt dans cette direction.


    Je comprend maintenant le sens de ta question.
    effectivement dans l'unité Dialogs de ma version de la VCL je n'ai pas la version surchargée.
    Voilà ce qui s'y trouve
    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
    25
    26
    27
    28
    function MessageDlg(const Msg: string; DlgType: TMsgDlgType;
      Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
    begin
      Result := MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, -1, -1, '');
    end;
     
    function MessageDlgPos(const Msg: string; DlgType: TMsgDlgType;
      Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer): Integer;
    begin
      Result := MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, X, Y, '');
    end;
     
    function MessageDlgPosHelp(const Msg: string; DlgType: TMsgDlgType;
      Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
      const HelpFileName: string): Integer;
    begin
      with CreateMessageDialog(Msg, DlgType, Buttons) do
        try
          HelpContext := HelpCtx;
          HelpFile := HelpFileName;
          if X >= 0 then Left := X;
          if Y >= 0 then Top := Y;
          if (Y < 0) and (X < 0) then Position := poScreenCenter;
          Result := ShowModal;
        finally
          Free;
        end;
    end;
    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. warning en utilisant message-resources
    Par hadler dans le forum Struts 1
    Réponses: 0
    Dernier message: 16/03/2012, 11h15
  2. [AC-2007] Utiliser message d'erreur
    Par le_sayan dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/06/2010, 16h08
  3. Réponses: 1
    Dernier message: 17/01/2010, 15h13

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