wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 3

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» KeyCode et wxTextCtrl
Conversation (Résolue) : KeyCode et wxTextCtrl
16-11-2007 15:52:20  KeyCode et wxTextCtrl #1
cfdev (Membre)
Lieu: Alpes de Haut Provence
Inscrit le : 08-11-2007
Messages: 127
Snippets: 4
Tutoriels: 0
Site web
Hors ligne
bonjour,

je lutte un peu avec l'evenement wxKeyEvent sur un wxTextCtrl

je voudrais lorsqu'on appui sur un touche ici un espace ou un moins, le remplacer par un underscore '_'.

Code Cpp:

void DialogProd::OnKeyName( wxKeyEvent& event )
{
int Key = event.GetKeyCode();
// On Filtre !
if((Key == ' ')||(Key == '-'))
{
Key ='_';
event.m_keyCode = Key;
event.Skip();
}
}


Mais ca ne fonctionne pas..:(

merci

GNU Linux Power !
Slacker
16-11-2007 16:37:01  Re: KeyCode et wxTextCtrl #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Tu peux, par exemple, créer ta propre classe dérivée de wxTextCtrl, et qui va gérer automatiquement ça:

Code wxWidgets:

// Fichier MyTextCtrl.h
#ifndef MYTEXTCTRL_H_INCLUDED
#define MYTEXTCTRL_H_INCLUDED
 
#include <wx/textctrl.h>
 
class MyTextCtrl : public wxTextCtrl
{
public:
    MyTextCtrl(wxWindow *parent,wxWindowID id,const wxString& value=_T(""),const wxPoint& pos=wxDefaultPosition,const wxSize& size=wxDefaultSize,long style=0);
private:
    void OnChar(wxKeyEvent &event);
    DECLARE_EVENT_TABLE();
};
 
#endif // MYTEXTCTRL_H_INCLUDED
 


Code wxWidgets:

// Fichier MyTextCtrl.cpp
#include "MyTextCtrl.h"
 
BEGIN_EVENT_TABLE(MyTextCtrl,wxTextCtrl)
    EVT_CHAR(MyTextCtrl::OnChar)
END_EVENT_TABLE();
 
MyTextCtrl::MyTextCtrl(wxWindow *parent,wxWindowID id,const wxString& value,const wxPoint& pos,const wxSize& size,long style)
    : wxTextCtrl(parent,id,value,pos,size,style)
{
    //constructor
}
 
void MyTextCtrl::OnChar(wxKeyEvent &event)
{
    int iChar=event.GetKeyCode();
    if ((iChar==32)||(iChar==45)) // Pour espace et '-'
        WriteText(_T('_'));
    else
        event.Skip();
}
 


Avec ça, tu n'as pas besoin de le gérer depuis ta wxFrame ou ton wxDialog

@+
Xav'
----------
Oups !
Il y avait une erreur dans le code php au niveau des "abonnements" par mail.
C'est maintenant corrigé, mais il est fort probable que tu n'aies pas reçu le mail t'indiquant que j'avais répondu.
Si c'est le cas, désolé...

@+
Xav'

Dernière modification par Xaviou (16-11-2007 16:52:37)


Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
16-11-2007 21:28:26  Re: KeyCode et wxTextCtrl #3
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Heu au passage c'etais quoi le bug?

Itérer est humain, récurser est divin
16-11-2007 22:37:50  Re: KeyCode et wxTextCtrl #4
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
Ça serait bien d'éradiquer ces vieux tableaux d'événements et de passer complétement à Connect(), c'est bien plus "moderne" :D
C'est pas pour rien que Vadim Zeitlin a résumé à la fin du billet "In praise with Connect" ceci: Vadim Zeitlin:
So the morale of the story is: don't hesitate to use Connect(), it's much more powerful than static event tables which should be reserved just for the most simple situations when you don't need any additional flexibility and wish to save some extra typing, or maybe not even then for consistency sake.

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
16-11-2007 22:56:29  Re: KeyCode et wxTextCtrl #5
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Connect c'est quoi? Tu lui files un delegates ou un truc du genre?

Itérer est humain, récurser est divin
17-11-2007 00:24:52  Re: KeyCode et wxTextCtrl #6
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
xxltux:
Heu au passage c'etais quoi le bug?
Tu parles de quoi ?
Si c'est de son code, je ne sais pas, car je n'ai pas essayé.
A mon avis, le "event.Skip()" est mal placé (il ne devrait pas être dans le "if").
Ensuite, il y a le " event.m_keyCode = Key" qui risque de poser problème, car la variable membre "m_keyCode" est marquée "dépréciée".

xxltux:
Connect c'est quoi?
Une méthode membre de wxEventHandler (dont sont dérivés tous les contrôles), qui te permet, comme son nom l'indique, de connecter dynamiquement un contrôle (à partir de son ID) à une méthode de ta classe.

blend:
Ça serait bien d'éradiquer ces vieux tableaux d'événements et de passer complétement à Connect(), c'est bien plus "moderne" :D
C'est pas pour rien que Vadim Zeitlin a résumé à la fin du billet "In praise with Connect" ceci: Vadim Zeitlin:
So the morale of the story is: don't hesitate to use Connect(), it's much more powerful than static event tables which should be reserved just for the most simple situations when you don't need any additional flexibility and wish to save some extra typing, or maybe not even then for consistency sake.
Comme il le dit si bien: ça devrait être réservé pour les cas simples (comme celui-ci ;) ).

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
17-11-2007 09:23:49  Re: KeyCode et wxTextCtrl #7
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
J'avais surtout retenu le "don't hesitate to use Connect()" :D

Oui mais après il court une rumeur selon laquelle wxWidgets est plein de macros :pleure: (manque un smiley comme ça, ça serait bien que tu l'ajoutes Xav' vu que je suis un gros chialeur :D)

Dernière modification par blend (17-11-2007 09:24:40)


Rien ne vaut la 2D pour éviter les problèmes de profondeur.
17-11-2007 10:21:40  Re: KeyCode et wxTextCtrl #8
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Oui, ca c'est sure que c'est bourré de macros, une des raisons pour laquelle un port automatique de wx en D est assez difficil. En gros je me demandais si ca utilise encore les tableaux d'event dans la class et que ca remonte ou si c'est un genre de delegates.

Pour le bug je parlai du site

Dernière modification par xxltux (17-11-2007 10:36:43)


Itérer est humain, récurser est divin
19-11-2007 10:08:31  Re: KeyCode et wxTextCtrl #9
cfdev (Membre)
Lieu: Alpes de Haut Provence
Inscrit le : 08-11-2007
Messages: 127
Snippets: 4
Tutoriels: 0
Site web
Hors ligne
Merci Xav
c'est la fonction que je cherchais !! galère

Code Cpp:

WriteText();

le event.m_keyCode = Key; ne marche pas

Merci ;)

++

GNU Linux Power !
Slacker
19-11-2007 20:08:32  Re: KeyCode et wxTextCtrl #10
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Pense à mettre le topic comme "Résolu", si c'est le cas...

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» KeyCode et wxTextCtrl