用异常处理来做: try StrtoInt(Edit1.Text); except On EConvertError do ShowMessage('必须是数字!'); end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key in['0'..'9','.',#8] then begin // end else begin key:=#0; showmessage('你的输入中不是数字的,请重新输入'); end; end;
try
StrtoInt(Edit1.Text);
except
On EConvertError do
ShowMessage('必须是数字!');
end;
begin
if key in['0'..'9','.',#8] then
begin
//
end
else
begin
key:=#0;
showmessage('你的输入中不是数字的,请重新输入');
end;
end;
1:使用专门的控件,其实实质上和下面的方法是一样的,更浪费资源,但是更灵活;
2:处理OnChange事件,用程序处理的方法来进行, 一般用gwsr(咩咩) 的代码没有问题,但是有一个小小的可能的BUG是,如果你的程序不是需要一个整数,而是一串的数字,那么这些数字就有可能会超出int的表示范围一样的会抛出异常,你看情况办了,哈哈;
3:处理OnKeyPress事件,这个其实比较可行,而且如果使用了集合的话可以很方便的加入新的可以输入的字符。