Dann kann man aber immernoch Buchstaben oder sonst was eingeben und Copy&Paste wurde auch nicht berücksichtigt.
Für Copy&Paste muss man dann schon in
OnChange überprüfen, z.B. so
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var i: Integer; s: String;
begin
if Edit1.Text <> '' then
begin
s := Edit1.Text;
i := 1;
while i <= Length(s) do
begin
if (not (s[i] in ['0'..'9', DecimalSeparator])) or
((s[i] = DecimalSeparator) and (Pos(DecimalSeparator, s) <> i)) then
Delete(s, i, 1)
else
Inc(i);
end;
if s <> Edit1.Text then
Edit1.Text := s;
end;
end;
Ja, und dann kann man sich OnKeyPress wohl sparen...
//edit:
Code verbessert!