MaskEdit
-
Hallo Leutz,
wie kann ich einem Edit-Feld anweisen, nur Ziffern anzunehmen?
Ein MaskEdit-Feld möchte ich nicht nehmen, weil keine Maske angezeigt werden soll.
Ich habe es versucht mit "KeyDown" oder "KeyUp", aber ich weiss leider nicht die "Namen" der Tasten 0 - 9
auf der Nummerntastatur oder auf der Normalen.
Die virtuellen sind in der Hilfe von Borland erklärt, aber ich finde nichts
über Buchstaben oder Zahlen.
Man soll die Methode " Ord('M') " benutzen können, aber darüber habe ich
auch nichts gefunden.
Der User darf auch nur 13 Ziffern eingeben und ein Komma soll nach der Zehnten Stelle auch erscheinen.Ich hoffe das sind nicht zuviel Prob's auf einmal...

-
im Zweifelsfalle baust du nen Handler, der bei einer Änderung des Feldes schaut, ob es eine Zahl ist und wieviele es schon gibt..
-
Mit dem Edit Style ES_NUMBER kannst du das auf Zahlen beschränken,
so z.B.:SetWindowLong(EditHwnd, GWL_STYLE, GetWindowLong(EditHwnd, GWL_STYLE) | ES_NUMBER);In deinem Fall genügt das aber nicht daher brauchst du eine Eventroutine, bei z.B. Keyup des Edits, dort Überprüfst du dann die Eingaben.
Zur not kannst du auch die WinowProc umstellen zu ner eigenen damit das seperat läuft und übersichtlicher, falls das nicht der Fall sein sollte.SetWindowLong(EditHwnd, GWL_WNDPROC, EditProcedure);Wie man das dan mit if, else und Co macht, weißt du ja selbst. Ich würde vieleicht auch noch das Clipboard sperren, bevor jemand nen wort rein pasted.
-
Hi,
hab es so gelöst:
Size = metNettoeinkaufspreisEingabe->GetTextLen();
Size++;
metNettoeinkaufspreisEingabe->GetTextBuf(Buffer,Size);a = Buffer[Size-2]-'0';
if(a == ',' || a == 0 || a == 1 ||
a == 2 || a == 3 || a == 4 || a == 5 ||
a == 6 || a == 7 || a == 8 || a == 9 )
metNettoeinkaufspreisEingabe->GetTextBuf(Speicher,Size);
else
{
Size--;
Buffer[Size - 2] = '\0';
metNettoeinkaufspreisEingabe->Text=Buffer;nicht elegant, aber funktioniert.
Nun springt der Cursor aber immer an die erste Position, wenn man falsch eingibt.
Wie kann ich den Cursor wieder am Ende der Zahl positionieren?
SetCursor(int) soll funktionieren, aber bei mir natürlich nicht....
KID
-
SetCursor hat damit nichts zu tun - schau dir mal EM_SETSEL an
-
Hallo,
hab ich auch versucht.
Meckert: Aufruf der undefinierten Funktion.
Wie soll ich die Funktion definieren?
Mit #Include<>?
Die Header hab ich schon...KID
-
EM_SETSEL ist keine Funktion, sie wird mittels SendMessage ans Edit gesendet, klick mal auf dem Link von flenders
-
Und als Ergänzung:
Bei Keyboard-Eingaben heißt das Ding nicht Cursor (==Maus), sondern Caret!