当我在文本框中输入1时,它怎么自动加为001(75分)

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

zhoumingbao

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是interbase和delphi编程
我的数据库里的一个数据
比如zone char(3)
我在文本框中输入1,我希望文本框中的1自动变为001
30会变成030
这样再存入库中
 
用Edit控件的OnExit事件啊。

procedure TForm1.Edit1Exit(Sender: TObject);
var i:integer;
s:string;
begin
i:=StrToIntDef(Edit1.text,0);
s:=IntToStr(i);
i:=length(s);
if i<3 then s:=copy('000',1,3-i)+s;
Edit1.Text:=s;
end;
 
把Field的DisplayFormat的值改为 000;

如果用EDIT 在Edit1Exit时
Edit1.Text:=FormatFloat('000', Strtoint(edit1.text))
 
自己写的一个函数,可自定义用什么字符填,填几位,从左边开始填还是从右边
type sDirection=(s_Left,s_Right,s_Up,s_Down);

function FillStr(sStr, fStr: string; i: integer;sides:sDirection): String;
begin
if sides=s_Left then //若為0﹐從左填起
begin
while Length(sStr)<i do
sStr:=fStr+sStr;
Result:=sStr;
end
else
begin
while Length(sStr)<i do
sStr:=sStr+fStr;
Result:=sStr;
end;
end;
 
还是这个题,我只允许输入0到999
假如我输入的不是数字应该报错,该怎么写?
 
同意 tinytao。

edit1.text in [0..9]
再判断
strtoint(edit1.text)<=999
 
在Edit的OnKeyPress中判断Key in ['0'..'9'],如果不在就将Key:=#0,同时报错。
 
位数可以用FORMAT函数搞定,数字最好在KEYPRESS里处理

if not(key in['0'..'9',' ']) then //加入你自己的编辑鍵
key:=#0;
 
将key:=#0换成abort
 
如果就在editexit 里该怎么写
先判断不能为非数字不能超过三位
(0 到999)
否则出错信息出
然后再补0
 
关于0到999的判断,前面大虾们也已经说的很清楚了,
对与1和001的转换,我有一个好方法是“文本框的内容+1000”然后将首位的
1去掉即可!
 
keypress
if not(key in['0'..'9',#13,#8]) then
key:=#0;
只许输入数字并接收回车及delete键
0。.999的判断设定maxlength长度=3不就行了吗?
11显示011
edit1exit;
exit1.text:=formatfloat('000',strtofloat(edit1.text));
 
判断edit.text的长度,如果是1,那就在前面加两个零,长度是2,前面加一个零
 
不用这么麻烦啊,你在IB表中设定该字段类型为string长度为3,这样输入的数
就不会超过3位啦!
再用以上tinytao兄的:
“把Field的DisplayFormat的值改为 000;”

不就解决了吗?
 
后退
顶部