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


  • Mod

    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.


Anmelden zum Antworten