Seite 1 von 1

TextCtl nur Zahlen eingeben

Verfasst: Dienstag 18. April 2006, 18:29
von rayo
Hi

Wie kann ich bei einem TextCtl machen, dass man nur Zahlen eingeben kann? Kann man irgendwo eine Eingabe-Maske angeben?

Würde gerne etwas im Format "### ### ## ##" haben.
und EVT_TEXT wird erst ausgelöst wenn der Buchstabe schon hinzugefügt wurde.

Gruss

Verfasst: Dienstag 18. April 2006, 19:42
von Buell
würde mir spontan einfallen ein irgend ein KEY Event zu verwenden und damit unzulässige Eingaben einfach zu ignorieren.

Algorithmus:
1. Key Event an TxtCtrl gebunden
2. Bei zB KeyUp on TxtCtrl überprüfe Zeichen
3. Wenn zeichen unzulässig lösche Zeichen
...

Verfasst: Dienstag 18. April 2006, 21:42
von gerold
Buell hat geschrieben:würde mir spontan einfallen ein irgend ein KEY Event zu verwenden und damit unzulässige Eingaben einfach zu ignorieren.
Hi!

Falls dir das zu wenig ist, dann sieh dir doch mal die Beispiele der "MaskedEditControls" aus der wxPython-Demo an. Vielleicht ist das etwas für dich.

lg
Gerold
:-)

Verfasst: Dienstag 18. April 2006, 22:11
von rayo
Hi

Ja hatte den EVT_KEY_DOWN event nicht gesehen.

Hier kleines Codesnippet:

Code: Alles auswählen

    def keyDown(self, event):
        if (48 <= event.KeyCode() <= 57 or 326 <= event.KeyCode() <= 335)and(not event.ShiftDown())and(not event.AltDown())and(not event.ControlDown()):
            event.Skip()
Und halt den EVT_KEY_DOWN an das TextCtl binden.

Gruss

*edit*
mhh genau die maskedcontrol hab ich gesucht, hab ich nicht gesehen.
Funktioniert super mit der Mask '### ### ## ##'

Verfasst: Mittwoch 3. Mai 2006, 14:21
von JanDMC
Weiss nicht ob du noch das Problem hast aber wie wäre es mit einem IntCtrl?

Verfasst: Mittwoch 3. Mai 2006, 16:07
von rayo
Das Problem besteht zwar nicht mehr aber das IntCtrl ist nicht schlecht zu wissen.

Danke für die Meldung

Gruss