EditControl und Zahl
-
Hallo
Bei meinem Dialog habe ich ein EditControll und in den Eigenschaften definiert das dieses Feld eine Zahl beinhalten soll. Nun steht standardmässig eine 0 in dem Feld drin wenn ich starte. Kann ich das irgendwie so einstellen das nichts drin steht ab start.
Bienchen
-
Die 0 wird Duch den entsprechenden DDX Code eingetragen.
Man kan dies nicht verhindern, außer Du ersetzt den DDX Code für dieses Feld in DoDataExchange Deines Diaoges so, wie Du esmöchtest.if (!pDX->m_bSaveAndValidate && m_iValue==0) // Daten werden geladen und der Wert ist 0. Wir sezen das Feld leer SetDlgItemText(IDC_...,_T("")); else ... // Hier kannst Du den alten DDX Befehl hinsetzen.
Du kannst das auch in eine eigenen DDX Funktion kapseln.
-
Hey bienchen,
Nimm einfach ein CString Edit - Eingabefeld. Dann steht nichts drin.
Wenn Du deine Zahl irgendwie berechnen willst, musst Du Sie halt vorher umwandeln.//int in CString int nWert = 123; CString str; str.Format("%d", nWert);//nWert wird CString //CString in int int nWert; CString str = "123"; nWert = atoi(str);//str wird int //double in CString double dZahl = 12.00; CString str; str.Format("%4.2f", dZahl);//dZahl wird CString //CString in double double dZahl; CString str = "123"; dZahl = atof(str);//str wird dZahl
Damit kannst Du dann rechnen.
-
Nimm einfach ein CString Edit
Es darf dem Benutzer aber nur erlaubt sein Zahlen einzugeben. Denke da ist der Lösungsansatz von Martin Richter besser. Danke an der Stelle.
-
Zu früh gefreut. Habe gar nicht bedacht, dass man ja eine 0 eingeben darf. Sprich wenn eine 0 eingegeben wird, wird diese nun überschrieben. Wollte einfach nur den Startwert am Anfang auf leer setzen
-
Keiner mehr eine Idee
-
du könntest den lösungsansatz von martin mit einer boolischen fariable erweitern
bzw. hast du ja schon eine.
ich weis jetzt nicht was pDX->m_bSaveAndValidate macht, wenn diese nicht gebraucht wird, setz m_bSaveAndValidate, nachdem start des programmes auf TRUE.
andernfals eben eine eigene Boolische membervariable einsetzen.if (!pDX->m_bSaveAndValidate && m_iValue==0) { // Daten werden geladen und der Wert ist 0. Wir sezen das Feld leer SetDlgItemText(IDC_...,_T("")); pDX->m_bSaveAndValidate = TRUE; } else ... // Hier kannst Du den alten DDX Befehl hinsetzen.
alternativ
BOOL m_bTorF = TRUE; if (!pDX->m_bSaveAndValidate && m_iValue==0 && m_bTorF) { // Daten werden geladen und der Wert ist 0. Wir sezen das Feld leer SetDlgItemText(IDC_...,_T("")); m_bTorF = FALSE; } else ... // Hier kannst Du den alten DDX Befehl hinsetzen.
-
Recht hast. Klar auf so was sollte man selber kommen. Danke.