还有一个办法可以从根本上解决你的问题,判断edit中输入的字符,不是数字就清除。
procedure TForm1.Edit1KeyPress(Sender: TObject
var Key: Char);
begin
if not (key in ['0'..'9','.']) then
key:=#0;
end;
Function IsNum(MyStr:String):Boolean;
const
OKChar: string = '0123456789.';
var
i:integer;
begin
Result:=True;
for i:=1 to Length(MyStr) do
begin
if pos(MyStr, OKChar) = 0 then
result:=False;
end;
end;