Nummernblock: Punkt statt Komma



  • Hallo,
    wie kann ich denn erreichen dass in einer dialogfeldbasierenden Anwendung wenn der Anwender auf das Komma des Nummernblocks drückt ein Punkt in den Eingabefeldern erscheint?!



  • Hi hi,

    ganz einfache Methode. Du überprüfst jedes Zeichen das in der Editbox eingegeben wurde. Mit dem Ereignis EN_CHANGE kannst du ds Prima machen. Dann kannst du jedes mal das eingegebene Zeichen lesen und per ASCII Tabelle abfragen ob es ein Komma ist, wenn ja dann lösche das letzte zeichen und setze einen Punkt, wenn nein dann lass das so stehen.

    Ich hoffe mal das hilft dir weiter.

    Hier eine Lösung:

    CString strEdit;
    int iEditString;
    char cEdit;
    
    m_MembervonEDITControl.GetWindowText(strEdit);
    
    iEditString = strEdit.GetLength();
    if (iEditString != 0) {
        cEdit = strEdit[iEditString-1];
    
        if (cEdit == 44) {
            m_MembervonEDITControl.SetSel(iEditString -1, iEditString, FALSE);
            m_MembervonEDITControl.Clear();
            m_MembervonEDITControl.SetWindowText(strEdit + ".");
            UpdateData(FALSE);
        }
    }
    

    Sollte funzen habs aber nicht getestet. 😉

    mfg
    Hellsgore



  • leider funktioniert das so nichtg ganz, immer wenn ich ein Komma eingeb wird das ganze Eingabefeld gelöscht und eine Null reingeschrieben.



  • Ich weiß ja nicht wozu Du das brauchst, aber warum änderst Du das nicht - wenn Du's zum rechnen brauchst - im Code per Replace?



  • ja, ich brauch es zum rechnen, aber per replace geht nicht, da sobald man ein komma in das feld eingibt und es den fokus verliert von den mfc eine message box kommt in der "bitte geben sie eine zahl ein" steht.


Anmelden zum Antworten