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 :

Modifier le curseur d'un messageboxA en D6


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut Modifier le curseur d'un messageboxA en D6
    Bonsoir à toutes et à tous,

    J'utilise une boite de dialogue type "messageboxA":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      buttonselected := MessageBoxA(0, 'Voulez-vous ajouter un cadre de couleur ?', 'Votre choix', MB_ICONWARNING or MB_YESNOCANCEL or MB_DEFBUTTON1);
     
     {TButton(FindComponent('mrcancel')).cursor :=1;
     TButton(FindComponent('mryes')).cursor :=1;
     TButton(FindComponent('mrno')).cursor :=1; }
    Et j'aimerai appliquer mon curseur personnel depuis une ressource.

    Tel quel cela ne fonctionne pas mais bien sur mes Tbutton de la fiche.

    Si quelqu'un avait une idée avec ce code je suis preneur.

    Mais avec ce code cela fonctionne si j'utilise un "messagedialog" :

    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
    29
     
    var
     MsgDialogYESNOCANCEL: TForm; // Identifier la variable MsgDialogOk
    begin
     
     MsgDialogYESNOCANCEL := CreateMessageDialog(EMessage3.Text, mtWarning,[mbYes, mbNo,mbCancel]);
     
     with MsgDialogYESNOCANCEL do
     try
     // changer le titre de Message
          Caption := ETitre3.Text;
     
     // Modifier le text de boutton oui
          TButton(FindComponent('Yes')).Caption := EButtonYES3.Text;
          TButton(FindComponent('Yes')).cursor :=1;
     
     // Modifier le text de boutton non
          TButton(FindComponent('No')).Caption := EButtonNO3.Text;
     
          TButton(FindComponent('No')).cursor :=1;
     // Modifier le text de boutton annuler
          TButton(FindComponent('Cancel')).Caption := EButtoncancel3.Text;
     
          TButton(FindComponent('Cancel')).cursor :=1;
     
     finally
     // Libérer la mémoire
      Free;
     end;
    Merci d'avance,

    @+,

    cincap

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 969
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    Salut,
    Citation Envoyé par cincap Voir le message
    Si quelqu'un avait une idée avec ce code je suis preneur.
    Hé bien, on dirait que la boîte de dialogue est affichée, en mode modal (appli bloquée tant que la boîte est là, en attente d'une action de l'utilisateur),
    Citation Envoyé par cincap Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      buttonselected := MessageBoxA(0, 'Voulez vous ajouter un cadre de couleur ?', 'Votre choix', MB_ICONWARNING or MB_YESNOCANCEL or MB_DEFBUTTON1);
    avec une magnifique faute d'orthographe bien classique maintenant (trait d'union à "Voulezvous", par pitié !), puis est fermée et tu lui modifies les boutons ensuite…

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Bonjour à toutes et à tous,

    @ Jipété,

    avec une magnifique faute d'orthographe bien classique maintenant (trait d'union à "Voulez–vous", par pitié !)
    merci de ta remarque, bien vu cela m'a échappé compte tenu d'un copier/coller.

    Je vais tester d'autres solutions car c'est des anciennes applications réalisées en D3 et D6 que je trie afin de les sauvegarder.

    @+,

    cincap

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Avec ce code, j'affiche le curseur mais je ne sais pas intercepter sur quel bouton j'ai cliqué :

    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
     
    MsgDialog := CreateMessageDialog('Voulez-vous un bord de couleurs ?', mtWarning,[mbYes, mbNo,mbCancel]);
     
     with MsgDialog do
     try
     // changer le titre de Message
          Caption := 'Mon choix';
     // Modifier le texte du boutton oui
          TButton(FindComponent('Yes')).Caption := 'Oui';
          TButton(FindComponent('Yes')).cursor := 1;
     // Modifier le text de boutton non
          TButton(FindComponent('No')).Caption := 'Non';
          TButton(FindComponent('No')).cursor := 1;
     // Modifier le text de boutton annuler
          TButton(FindComponent('Cancel')).Caption := 'Annulez';
          TButton(FindComponent('Cancel')).cursor := 1;
     
          ShowModal;
     finally
     // Libérer la mémoire
      Free;
     end;
    Si il est possible d'une aide merci d'avance.

    @+,

    cincap

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Voici une solution peut être pas élégante mais ….:

    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
    29
    30
    31
    32
    33
     
    var
     MsgDialog: TForm; // Identifier la variable MsgDialogOk
    begin
     
     
     MsgDialog := CreateMessageDialog('Voulez-vous un bord de couleurs ?', mtWarning,[mbYes, mbNo,mbCancel]);
     
     
     with MsgDialog do
     try
     // changer le titre de Message
          Caption := 'Mon choix';
     // Modifier le text de boutton oui
          TButton(FindComponent('Yes')).Caption := 'Oui';
          TButton(FindComponent('Yes')).cursor := 1;
     // Modifier le text de boutton non
          TButton(FindComponent('No')).Caption := 'Non';
          TButton(FindComponent('No')).cursor := 1;
     // Modifier le text de boutton annuler
          TButton(FindComponent('Cancel')).Caption := 'Annulez';
          TButton(FindComponent('Cancel')).cursor := 1;
     
          ShowModal;
     finally
     // Libérer la mémoire
      Free;
     end;
     case msgDialog.ModalResult of
          mrYes    : ShowMessage('Yes');
          mrNo     : ShowMessage('No');
          mrCancel : ShowMessage('Cancel');
        end;
    @+,

    cincap

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 969
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    Citation Envoyé par cincap Voir le message
    Voici une solution peut-être pas élégante mais ….:
    Et pourquoi donc ? On s'en fiche un peu du diktat de l'élégance, si l'efficacité est là.

    Et tiens, à propos d'efficacité, j'aurais plutôt fait ainsi (non testé) :
    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
     with MsgDialog do
     try
     // changer le titre de Message
          Caption := 'Mon choix';
     // Modifier le texte du bouton oui
          TButton(FindComponent('Yes')).Caption := 'Oui';
          TButton(FindComponent('Yes')).cursor := 1;
     // Modifier le texte du bouton non
          TButton(FindComponent('No')).Caption := 'Non';
          TButton(FindComponent('No')).cursor := 1;
     // Modifier le texte du bouton annuler
          TButton(FindComponent('Cancel')).Caption := 'Annuler';
          TButton(FindComponent('Cancel')).cursor := 1;
     
          ShowModal;
     
          case ModalResult of // ici histoire d'être sûr que ModalResult est bien valide avant la libération du dialogue
            mrYes    : ShowMessage('Yes');
            mrNo     : ShowMessage('No');
            mrCancel : ShowMessage('Cancel');
          end;
     finally
     // Libérer la mémoire
       Free;
     end;

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Bonjour à toutes et à tous,

    @ Jipété, merci de ton retour et de ta correction, cela fonctionne correctement.

    Ce topic est donc fermé avec une solution.

    @+,

    cincap

  8. #8
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 410
    Points : 3 174
    Points
    3 174
    Par défaut
    Bonjour Cincap,

    Attention, il faut que tu testes IsAbortResult, sinon tu as une mauvaise réponse sur la croix de fermeture :

    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
    29
    30
    31
    procedure TF_Princ.Button1Click(Sender: TObject);
    var
     MsgDialog: TForm; // Identifier la variable MsgDialogOk
    begin
     MsgDialog := CreateMessageDialog('Voulez-vous un bord de couleurs ?', mtWarning,[mbYes, mbNo,mbCancel]);
     with MsgDialog do
     try
     // changer le titre de Message
          Caption := 'Mon choix';
     // Modifier le text de boutton oui
          TButton(FindComponent('Yes')).Caption := 'Oui';
          TButton(FindComponent('Yes')).cursor := crHandPoint;
     // Modifier le text de boutton non
          TButton(FindComponent('No')).Caption := 'Non';
          TButton(FindComponent('No')).cursor := crCross;
     // Modifier le text de boutton annuler
          TButton(FindComponent('Cancel')).Caption := 'Annulez';
          TButton(FindComponent('Cancel')).cursor := crDrag;
          ShowModal;
          If IsAbortResult(msgDialog.ModalResult) Then ShowMessage('Abort')
          Else
            Case msgDialog.ModalResult of
                mrYes    : ShowMessage('Yes');
                mrNo     : ShowMessage('No');
                mrCancel : ShowMessage('Cancel');
              end;
     finally
     // Libérer la mémoire
      Free;
     end;
    end;
    A+
    Charly

    PS : avec un Windows Français, tu devrais directement avoir &Oui, &Non et Annuler ?

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Bonsoir à toutes et à tous,

    @ Charly910, merci de ta remarque :

    PS : avec un Windows Français, tu devrais directement avoir &Oui, &Non et Annuler ?
    En fait je me servais pas de la modification du "Caption" car comme tu le dis, avec un Windows Français c'est automatique.

    Mais comme je faisais des essais, j'ai testé le "Caption", il n'y a qu'avec le "hint" que je n'ai pas trouvé et comment placer les curseurs avec "messagebox".

    Avant ton intervention, si tu fermes la boite de dialog avec la croix tu obtiens le mode "Cancel" automatiquement et c'est pour cela que j'ai évité de tester "IsAbortResult".

    @+,

    cincap

  10. #10
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 410
    Points : 3 174
    Points
    3 174
    Par défaut
    Bonjour,

    tu es sûr ? chez moi, sur la croix de fermeture, le dialog renvoie le bouton qui a le focus ?

    A+
    Charly

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 410
    Points : 3 174
    Points
    3 174
    Par défaut
    Tu as raison, la croix de fermeture renvoie mrCancel.

    IsAbortResult n'est utile que si on veut distinguer la croix de fermeture du bouton Cancel.

    A+
    Charly

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Bonjour à toutes et à tous,

    @ Charly910, pas de problème ta participation est toujours constructive et utile.

    Cordialement,

    @+,

    cincap

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

Discussions similaires

  1. Probleme+modifier le curseur de la souris
    Par nonna dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 11/04/2008, 10h27
  2. Modifier le curseur
    Par TylerKnoxx dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 21/02/2008, 17h26
  3. Comment modifier le curseur par défaut de l'application
    Par homeostasie dans le forum Visual C++
    Réponses: 2
    Dernier message: 28/06/2007, 17h56
  4. Modifier un curseur par une image
    Par daninho dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 28/01/2006, 22h32
  5. [Curseur] Modifier le curseur lors d'un clic bouton
    Par Casp dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 01/12/2005, 12h45

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