Partage
  • Partager sur Facebook
  • Partager sur Twitter

WxWidgets

Tabulation et wxTE_PROCESS_ENTER

Sujet résolu
    18 mars 2008 à 21:22:48

    Bonjour,
    Je suis en train de créer un programme permettant d'apprendre les verbes irréguliers anglais (http://congelli.kelio.org/) grâce à la bibliothèque wxWidgets.

    J'ai un problème avec mes champs texte : j'aimerais utiliser le style wxTE_PROCESS_ENTER pour que l'utilisateur puisse valider sa réponse par la touche Entrée, mais lorsque ce style est actif, on ne peut plus parcourir les contrôles avec la touche tabulation...

    Ce problème semble être réglé dans une "version SVN". Apparemment, ces versions sont des sortes de nighty build. Le problème c'est que je ne sais pas comment télécharger ces versions.

    Pouvez-vous me venir en aide ?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2008 à 23:32:37

      Mais normalement tu n'as pas besoin de gérer cette évènement j'ai regardé un peu comment se présenté ton logiciel et apparemment tu valide normalement en cliquant sur un bouton valider bref si tu as plusieurs contrôle de texte tu peux passer de l'un à l'autre avec Entrer (ou tabulation) et arrivé sur le bouton tu met Entrer et comme ton bouton sera sélectionné il va se 's'exécuter". Pas D'accord ?

      Ou sinon si tu veux vraiment faire comme ça tu peux toujours faire "le bourrin" et utiliser ceci :
      wxTE_PROCESS_TAB et tu fait une fonction qui passe d'un contrôle à l'autre grâce à la fonction tonControle->SetFocus() qui donne le focus à ton contrôle et qui lui permet ainsi de recevoir les évènements du clavier.

      Voilà j'espère avoir été assez claire sinon n'hésite pas à demander plus d'info.
      • Partager sur Facebook
      • Partager sur Twitter
        19 mars 2008 à 17:47:28

        Le problème c'est que le réflex de beaucoup d'utilisateur (moi y compris) est d'utiliser la touche Entrée pour valider.
        Je pense utiliser ta "méthode bourrin", mais en dernier recours, en effet, si le problème est corrigé dans ces fameuses versions SVN, je n'aurais plus de problème avec ça...
        • Partager sur Facebook
        • Partager sur Twitter
          23 mars 2008 à 23:06:58

          Si non, il n'y a pas un moyen de capturer toutes les frappes lorsque l'application a le focus ? Comme cela je pourrai m'occuper de la touche entrée sans affecter mes wxTextCtrls...
          • Partager sur Facebook
          • Partager sur Twitter
            23 mars 2008 à 23:34:17

            Tu peux utiliser ça :

            1. EVT_KEY_DOWN(TaClass::OnKeyPush)    // Tu met ça dans ta table d'évènement
            2. void TaClass::OnKeyPush(wxKeyEvent& event)
            3. {
            4.     if(event.GetKeyCode()  == WXK_RETURN)
            5.     {
            6.         //Tes actions
            7.     }
            8. }


            Tu peux aussi utiliser ça : WXK_TAB pour les tabulations mais je te renvoie à la doc pour plus d'info
            wxKeyCode
            wxKeyEvent

            Voilà en espérant que ça puisse t'aider a+
            • Partager sur Facebook
            • Partager sur Twitter
              24 mars 2008 à 20:46:12

              Merci, mais j'ai l'impression qu'il n'y a que la touche entrée de pavé numérique qui a un "KeyCode"...
              Peut-on tout de même capturer la touche entrée ?
              • Partager sur Facebook
              • Partager sur Twitter
                24 mars 2008 à 22:40:44

                C'est bizarre parce que il indique bien 2 code différent :
                WXK_RETURN et
                WXK_NUMPAD_ENTER
                Sinon essai de regarder si c'est égale à 10.
                Ou alors tu utilise ça GetUnicodeKey() et tu regarde si ça correspond en hexadécimale à 0x0D mais ça je suis moins sur essai et tu verra ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  25 mars 2008 à 7:02:19

                  J'ai utilisé cette fonction :
                  1. //------------------------------------------------------------------------------
                  2. void TMyFrame::OnKeyPush(wxKeyEvent& event) //Pr touche entrée
                  3. {
                  4.     wxMessageBox(_("Test"));
                  5. }


                  J'ai un message "Test" pour toute les touches sauf TAB et entrée.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 mars 2008 à 21:54:09

                    Hello.

                    Il est possible d'intercepter l'appui sur la touche [ENTREE] avec le style wxTE_PROCESS_ENTER en passant par l'événement wxEVT_COMMAND_TEXT_ENTER.
                    Tu mets la macro EVT_TEXT_ENTER(id, func) dans la table des événements, quand tu reçoit l'événement, tu donnes le focus au contrôle suivant.

                    Sinon, mets également le style wxTE_PROCESS_TAB à tes wxTextCtrl, et tu pourras gérer toi même le changement de contrôle depuis l'événement wxEVT_CHAR qui sera généré à chaque appui sur TAB.

                    Bonne chance
                    Xav'
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Portail français wxWidgets : wxDev.fr | Quelques progs + libs wxWidgets compilées : mywxstuff
                      25 mars 2008 à 22:11:44

                      Ok, comme je n'ai pas le choix, je vais faire ça.
                      Merci à tous !

                      Et... J'ai un petit service à demander... Est ce que quelqu'un pourrait me dire si mon programme fonctionne sous Windows Vista ? Pour le télécharger : http://congelli.kelio.org/download.php.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      WxWidgets

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown