edit控件的问题--急!(100分)

  • 主题发起人 zjtony1981
  • 开始时间
Z

zjtony1981

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,我要判断edit的text中输入的是否是数字,这该如何实现?
 
try
int:=strtoint(edit1.text);
except
showmessage('不是数字');
end;
 
你先在Edit1的Keypress事件里面屏蔽输入其他字母或者字符,只能输入数字
if (key<>'1')
and (key<>'2')
and (key<>'3')
and (key<>'4')
and (key<>'5')
and (key<>'6')
and (key<>'7')
and (key<>'8')
and (key<>'9')
and (key<>#8) then
// #8为退格
begin
key:=#0;
end;

也可以这样
try
strtoint(edit.txt);
except
showmessage('不是整数')
end;
1 如何判断 edit 中输入的是不是数字?
用StrToInt StrToFloat或者isnumval,但注意必须在程序中屏蔽出错编译选项或者重载异常捕捉,因为如果不是会抛出异常。
2 如果判断是整数还是real?
你可以判断1 是否有小数点 2 判断StrToInt(text)- StrToFloat(text) <>0
3 isnumval() 是什么?好象不能用。
判断一个字符串是否为数字,能用。
或者
使用maskedit
可以直接设置格式。
 
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if Key>'9' then
Key:=#0;
end;
 
and (key<>'0')
and (key<>'.')
 
使用Val函数
procedure Val(S;
var V;
var Code: Integer);
例子:
uses Dialogs;
var
I, Code: Integer;
begin
{ Get text from TEdit control }
Val(Edit1.Text, I, Code);
{ Error during conversion to integer? }
if Code <> 0 then
MessageDlg('Error at position: ' + IntToStr(Code), mtWarning, [mbOk], 0);
else
Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));
end;
 
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if Key>'9' or key<'0' then
showmessage('不是数字');
end;
 
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9', #8, #13]) then
begin
key := #0;
//不是数字的处理过程
...
end;
end;
 
在输入过程这样使用:
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
type
Tkeyword=set of char;
var
keyword:Tkeyword;
begin
keyword:=['0','1','2','3','4','5','6','7','8','9','.',#8];
if not (key in Keyword) then
begin
//如果不是以上数字
beep();
key:=char(0);
end;
end;
 
推薦lovewjp的方法!!
 
用MaskEdit吧,有控制只输入数字的,很好用
 
哈哈,有许多种好方面受教啊!
 
谢谢各位
 
顶部