关于输入数据的有效性检查(100分)

  • 主题发起人 主题发起人 南宫慕容
  • 开始时间 开始时间

南宫慕容

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi5/paradox

表结构如下:
字段名称 类型
cphm S //产品代码
cpmc A 20 //产品名称
py A 20 //产品拼音代码
cpsl I //产品数量
......

在设计数据输入时,用了Dbgrid和edit
问题:当让用户输入“产品代码”或“产品数量”时,怎么在table.post前检查出
输入的是阿拉伯数字,而不是其他别的什么乱七八糟的东东?
请各位大虾不吝赐教!
 
BeforePost:
try
StrToInt(input);
except
其他别的什么乱七八糟的东东
end try;
 
基本思路同楼上,写全
BeforePost:
try
StrToInt(input);
except
ShowMessage('有乱七八糟的东西输入');
cancel;
end;
 
procedure TForm1.Edit1Exit(Sender: TObject);
begin
try
StrToInt(Edit1.Text);
except
Edit1.SetFocus;
end;
end;
 
当输入的阿拉伯数字太长时,进行数据类型转换会出问题,我用一个笨方法:把它截成几
截,再检查。
各位有更好的方法吗?
 
为什么非要用DBGRID,用EDIT不更好吗?好象有个控件FLEDIT,专门输入数字的,
《程序员大本营2000》上有。
 
Dbgrid 和 Dbedit 没有什么好检查的 数据感知控件已经帮你作了
如一定要用 edit 只有BeforePost了。
 
在字段的onvalidate事件中也可。
 
在Edit的KeyPress事件中加入
if not (key in ['0'..'9',#8,#13,'.']) then
key:=#0;
这样就只能输入数字、小数点、回车、取消健了
如果你还怕只输入小数点之类的东西,可以在
Edit的OnExit事件中写入
try
strtofloat(edit1.text);
except
Application.MessageBox('数字输入错误','提示',mb_ok+mb_iconstop);
edit1.SetFocus;
exit;
end;
 
采用了st_cumt的方案。非常感谢各位的大力帮助,小弟感激不尽
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
922
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部