Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: wxTextValidatorin/wxArrayStringin käyttö

alottelijaa [16.12.2008 20:53:36]

#

Hei taas!

Aikani tapeltuani tekstinsyötön filteröinnin kanssa sain sen vihdoin toimimaan.

wxArrayString lista;

inline void lAdd(){
            lista.Add(wxT("1"),1);
            lista.Add(wxT("2"),1);
            lista.Add(wxT("3"),1);
            lista.Add(wxT("4"),1);
            lista.Add(wxT("5"),1);
            lista.Add(wxT("6"),1);
            lista.Add(wxT("7"),1);
            lista.Add(wxT("8"),1);
            lista.Add(wxT("9"),1);
            lista.Add(wxT("0"),1);
            lista.Add(wxT("."),1);}

wxTextValidator wallu(wxFILTER_INCLUDE_CHAR_LIST);
   wallu.SetIncludes(lista);

   aa = new wxTextCtrl(p1, A, wxEmptyString, wxPoint(10,35), wxSize(120,20), 0, wallu);
   bb = new wxTextCtrl(p1, B, wxEmptyString, wxPoint(10,95), wxSize(120,20), 0, wallu);
   cc = new wxTextCtrl(p1, C, wxEmptyString, wxPoint(10,155), wxSize(120,20), 0, wallu);

Kysymys kuuluu: Minkä takia vain viimeinen merkki sallitaan ja muita ei voi painaa, jos laitan jokaisen yksittäisen Add() sijalla

int i; char s;

for (i=0;i<10;i++) s = i; lista.Add(s,1);

Muuten laittaisin suoraan i:n arvon mutta nähdäkseni Add() vaatii merkkijonon?

Ja jos teen dialogiin (wxDialog) vaikka wxSizer tai wxTextCtrl yms. widgettejä tarviiko ne erikseen tuhota vai hoitaako Destroy() niidenkin tuhoamisen?

PS: kopioin nuo paristakin eri paikkaa koodiani, esim inline tuli juuri sen takia mukaan.

jlaire [16.12.2008 21:55:02]

#

alottelijaa kirjoitti:

Kysymys kuuluu: Minkä takia vain viimeinen merkki sallitaan ja muita ei voi painaa, jos laitan jokaisen yksittäisen Add() sijalla

int i; char s;

for (i=0;i<10;i++) s = i; lista.Add(s,1);

Tuo on sama kuin tämä:

int i; char s;

for (i = 0; i < 10; i++) {
    s = i;
}
lista.Add(s,1);

alottelijaa kirjoitti:

Muuten laittaisin suoraan i:n arvon mutta nähdäkseni Add() vaatii merkkijonon?

Siltä näyttää, mutta char on eri asia kuin wxString& ja ylimääräisen muuttujan käyttäminen tyypin muuttamiseen on joka tapauksessa turhaa.

alottelijaa [17.12.2008 08:27:43]

#

Ahaa nyt tajusin :P

Kiitoksia taas.

Nyt tuli eteen kuitenkin uusi pulma: Minulla on funktioita joissa käytetään cout:ia ja haluaisin ne tulostumaan tiettyyn tekstikontrolliin.

Koitin käyttää wxStreamToTextRedirector:ia, mutta jostain syystä ohjelma kaatuu aina kesken suorituksen jos setup.h:ssa on rivi wxUSE_STD_IOSTREAM asetettu 1:ksi. Onko siis ainoa keino "muuntaa" kaikki couttia käyttävät rivit wxwidgetsin ymmärtämään muotoon (staticText?)

vai onko wx:llä omaa tarkoitukseen sopivaa tulostusfunktiota?

alottelijaa [18.12.2008 15:46:42]

#

Sain toimimaan kun tein avuksi wxTextCtrl referenssin ko. paikkaan mihin tahdoin tulostaa. Nähtävästi noihin tekstikontrolleihin voi tulostaa samoin kuin coutilla :O.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta