number型数据的问题(100分)

  • 主题发起人 主题发起人 wyw
  • 开始时间 开始时间
W

wyw

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库中有个字段的类型为number(6,2),界面上有个tedit控件,我怎样使用户输入的内容
与数据库中该字段的类型一致
 
tmaskedit可以实现自动控制
或者在tedit的onkeypress事件中程序进行控制:比如判断当前输入位置,再判断小数点位
置和小数点后的位数,如果是在小数点位置之后进行输入且小数是两位的话就key:=#0;如
果字串总长度是6的话就key:=#0;注意判断退格键的输入#8。
 
在edit中限制
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var p:integer; tp:TPoint;
begin
if key in ['0'..'9','.'] then
if key='.' then
begin
p:=pos('.',Edit1.Text);
if p>0 then key:=#0;
end
else if key>#31 then key:=#0;
end;
然后strtofloat(edit1.text)存到字段中就可以了
 
有人修改数据时习惯用鼠标选中要修改的字符,然后再输入字符,所以还要在被Edit在选中时
能接受字符输入,下面代码可以参考一下,再修改修改
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key <> #8 then
begin
if Key in ['0'..'9', '.'] then
begin
if (Length(Edit1.Text) >= 6) then
begin
if Edit1.SelLength = 0 then
Key := #0
end
else if Pos('.', Edit1.Text) <> 0 then
begin
if Length(Copy(Edit1.Text, Pos('.', Edit1.Text) + 1,
Length(Edit1.Text))) >= 2 then
begin
if Edit1.SelLength = 0 then
Key := #0;
end;
end;
end
else
begin
if Edit1.SelLength = 0 then
Key := #0;
end;
end;
end;
 
可以了吧!
 
多人接受答案了。
 
后退
顶部