Sicherheitabfragen

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;
  }
 
}