====== 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==BS)||(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;
}
}
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
if (!((Key>='0')&&(Key<='9')||(Key==',')||(Key==8)))
{Key=0;
}
if (Key==',' && Edit1->Text.Pos(",")!=0) { //verhindert 2 Kommas!
Key=0;
}
//Erlaubt nur 2 weitere Ziffern nach dem Komma!
if (Edit1->Text.Length()-Edit1->Text.Pos(",")==2&&(Key!=8)&&Edit1->Text.Pos(",")!=0) {
Key=0;
}