Hab mal eine kleine Procedure für das OnKeyPress geschrieben um nur Integer zuzulassen, auch negative:
Delphi-Quellcode:
procedure TFormMain.EditKeyPressCheckInteger(Sender: TObject; var Key: Char);
begin
if ((Sender as TLabeledEdit).SelStart = 0) then
begin
if not (Key in [#45,'0'..'9', #8]) then
Key := #0;
end else
if not (Key in ['0'..'9', #8]) then
Key := #0;
end;
Hier eine Variante für Kommmazahlen:
Delphi-Quellcode:
procedure TFormMain.EditKeyPressCheckComma(Sender: TObject; var Key: Char);
begin
if Key = #44 then
Key := DecimalSeparator;
// Nur ein Komma zulassen
if (Key = DecimalSeparator) and
(pos(DecimalSeparator,(Sender as TLabeledEdit).Text) > 0) then
Key := #0
// Das Komma darf nicht am Anfang stehen
else if (Key = DecimalSeparator) and ((Sender as TLabeledEdit).SelStart = 0) then
Key := #0
// -, nicht zulassen
else if ((Sender as TLabeledEdit).SelStart = 1) and
((Sender as TLabeledEdit).Text[1] = #45) and
(Key = DecimalSeparator) then
Key := #0
// Ein Minus darf am Anfang stehen und nur Zahlen zulassen sowie Backspace
else if ((Sender as TLabeledEdit).SelStart = 0) then
begin
if not (Key in [DecimalSeparator,#45,'0'..'9', #8]) then
Key := #0;
end else
begin
if not (Key in ['0'..'9', #8, DecimalSeparator]) then
Key := #0;
end;
end;
Aber: Ich hab in dem Projekt das so gemacht, dass als Komma nur ein . zugelassen wird. Wenn die Kommataste gedrückt wurde, dann wird ein Punkt hinzugefügt, kein Komma.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.