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.
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.
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?
Sain toimimaan kun tein avuksi wxTextCtrl referenssin ko. paikkaan mihin tahdoin tulostaa. Nähtävästi noihin tekstikontrolleihin voi tulostaa samoin kuin coutilla :O.
Aihe on jo aika vanha, joten et voi enää vastata siihen.