在OnChange事件中procedure TMainForm.InputEditChange(Sender: TObject); begin //只输入数字的编辑框 try if (Sender as TEdit).Text<>'' then StrToFloat(TEdit(Sender).Text); except MessageDlg('请注意所输入字符的正确性'+#13+' "'+TEdit(Sender).Text+'"', mtWarning,[mbOk],0); TEdit(Sender).SelectAll; end; end; end;
begin //只输入数字的编辑框
try
if (Sender as TEdit).Text<>'' then StrToFloat(TEdit(Sender).Text);
except
MessageDlg('请注意所输入字符的正确性'+#13+' "'+TEdit(Sender).Text+'"',
mtWarning,[mbOk],0);
TEdit(Sender).SelectAll;
end;
end;
end;
数字有正负,有一般形式,指数形式,单纯的在KEYPRESS,ONKEYDOWN中
判断是否0-9只能判断是正整数,这是其一;加入小数点和字母e或^,在加入
+、-当然会好一些,但是你还要考虑多个小数点,或多个加减号——
这在ONKEYDOWN中是可以接受的——的问题,这是其二;还有Cut-Copy-Paste的问题,这是其三。
所以如果要完整的解决这个问题,是要做一个函数的。如果想简单地解决,
用StrToFloat来转换并引发一个异常处理,是比较全面的考虑。