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 : 2
Pub hébergeur
Pourquoi cette pub ?

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» wxTextCtrl et OnFocus
Conversation (Résolue) : wxTextCtrl et OnFocus
11-02-2014 07:22:10  wxTextCtrl et OnFocus #1
ajm (Membre)
Inscrit le : 16-03-2011
Messages: 82
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

Est-ce possible que quand un wxTextCtrl a une valeur "$100" et on quand on clic pour l’éditer ce valeur devient "100" (c-a-d OnFocus). et quand on quitte l’éditeur, le "$" est ajourer.

Comme dans l'excel.

Je sais pas si vous comprenez mais c'est un peut difficile pour moi de l'expliquer.

En faite je veux utiliser le code suivant pour le onfocus

Code wxWidgets:

 
wxString tmp=TextCtrl1->GetValue();
tmp.Replace(_("$",_(""),true));
TextCtrl1->SetValue(tmp);
 


et le code suivant quand on quitte l’éditeur

Code wxWidgets:

 
TextCtrl1->SetValue(wxString::Format(_("$%s"),TextCtrl1->GetValue()));
 

Dernière modification par ajm (11-02-2014 07:39:18)

11-02-2014 08:41:18  Re: wxTextCtrl et OnFocus #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1368
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Je viens d'essayer, et ça marche nickel.

Tu connectes les évènements "wxEVT_SET_FOCUS" et "wxEVT_KILL_FOCUS" de ton wxTextCtrl à deux méthodes dans lesquelles tu gères ton affichage.

Tu n'oublies pas d'appeler "Skip" sur le wxFocusEvent dans les deux cas, pour laisser le comportement par défaut se faire.

Voici un exemple fait à l'arrache' (il y a un wxButton et un wxTextCtrl supplémentaires pour pouvoir donner le focus à un autre contrôle):

Code wxWidgets:

 
MainFrame::MainFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
    wxPanel *pnl=new wxPanel(this, -1);
 
    wxBoxSizer *szrMain=new wxBoxSizer(wxVERTICAL);
 
        szrMain->Add(new wxButton(pnl, -1, _T("")), 0, wxALL|wxEXPAND, 5);
 
        wxBoxSizer *lnszr=new wxBoxSizer(wxHORIZONTAL);
            lnszr->Add(new wxStaticText(pnl, -1, _T("Valeur :")), 0, wxALL|wxALIGN_CENTER_VERTICAL, 0);
            m_txtValue=new wxTextCtrl(pnl, -1, _T("$ 0.00"));
            lnszr->Add(m_txtValue, 1, wxLEFT, 5);
        szrMain->Add(lnszr, 0, wxLEFT|wxRIGHT|wxEXPAND, 5);
 
        szrMain->Add(new wxTextCtrl(pnl, -1, _T("")), 0, wxALL|wxEXPAND, 5);
    pnl->SetSizer(szrMain);
 
    m_txtValue->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(MainFrame::OnGetFocus), NULL, this);
    m_txtValue->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(MainFrame::OnKillFocus), NULL, this);
}
 
MainFrame::~MainFrame()
{
    // Destructeur
}
 
void MainFrame::OnGetFocus(wxFocusEvent &event)
{
    double dVal;
    wxString sValue=m_txtValue->GetValue();
    if (sValue[0]==_T('$')) sValue[0]=_T(' ');
    sValue.ToDouble(&dVal);
    m_txtValue->ChangeValue(wxString::Format(_T("%0.2f"), dVal));
    m_txtValue->SetSelection(-1, -1);
    event.Skip();
}
 
void MainFrame::OnKillFocus(wxFocusEvent &event)
{
    double dVal;
    wxString sValue=m_txtValue->GetValue();
    if (sValue[0]==_T('$')) sValue[0]=_T(' ');
    sValue.ToDouble(&dVal);
    m_txtValue->ChangeValue(wxString::Format(_T("$ %0.2f"), dVal));
    event.Skip();
}
 


@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
11-02-2014 09:32:55  Re: wxTextCtrl et OnFocus #3
ajm (Membre)
Inscrit le : 16-03-2011
Messages: 82
Snippets: 0
Tutoriels: 0
Hors ligne
Merci pour la réponse. Je vais faire le test.
----------
Ca marche très bien.

Merci Xav

Dernière modification par ajm (11-02-2014 09:43:23)

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» wxTextCtrl et OnFocus