In den Eingabefeldern sind nur ganz bestimmte Tasten sinnvoll (die Ziffern von 0 bis 9, das Komma und die Backspace-Taste. Um nur diese Tasten zuzulassen, kann das KeyPress-Ereignis benützt werden. Werden andere als die vorgesehenen Tasten gedrückt, wird der Parameter Key auf Null gesetzt.
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) {if (!((Key>='0')&&(Key<='9')||(Key==',')||(Key==8)||(Key=='-'))) {Key=0; } if (Key==',' && Edit1->Text.Pos(",")!=0) { //verhindert 2 Kommas! Key=0; } if (Key=='-' && Edit1->Text!="") { //erlaubt ein Minus an erster Stelle! (negative Zahlen) Key=0; } }
Besser lesbar wird der Quelltext, wenn die verwendeten Spezial-ASCII-Werte wie Backspace zuvor mit #define als Konstante definiert werden, z.B.
#define BS 8 #define LEER 0
Die obige Funktion sieht damit folgendermaßen aus:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) {if (!((Key>='0')&&(Key<='9')||(Key==',')||(Key==8)||(Key=='-'))) {Key=LEER; } if (Key==',' && Edit1->Text.Pos(",")!=0) { //verhindert 2 Kommas! Key=0; } if (Key=='-' && Edit1->Text!="") { //erlaubt ein Minus an erster Stelle! (negative Zahlen) Key=0; } }