delphi中怎样控制客户输入金额的情况 ( 积分: 100 )

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

zxqhty

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi的文本输入框中怎么才能控制输入的是金额的情况,保留两位小数,并保证输入的正确,处理小数点的情况,只能按照*****.**的格式,或者对于不带角分的情况可以输入*******.或者*******不带小数点的格式。请哪位大哥帮忙解决一下。谢谢!
 
在输入框的ONKeyPress函数中判断
Txm := trim(AEdit.Text);
if pos('.',Txm)>0 then
begin
if (key in ['0','1','2','3','4','5','6','7','8','9']) or (key=#13) or (key=#8) then
key := key
else
key := #0;
end
else
begin
if (key in ['0','1','2','3','4','5','6','7','8','9','.']) or (key=#13) or (key=#8) then
key := key
else
key := #0;
end;
至于输入的字符最后保留什么格式的话,你可以在OnExit函数中自己处理
 
保留两位小数
你可以在後台數據庫裡面設置字段的精度啊
 
suyi3026的方法可以控制,
可以使用数据榜定控件
 
用Delphi自带的MaskEdit控件就可以做到呀
 
在OnExit函数用round(StrToFloat(edit1.text)*100+0.01)/100; //保留两位小数
 
写了一个检查是否有多个点的函数:
function Isdot(const dot: string): Boolean;
var
i, lenstr, zd: integer;
begin
Result := False;
zd := 0;
lenstr := Length(trim(dot));
for i := 1 to lenstr - 1 do
begin
if pos('.', copy(trim(dot), i, 1)) > 0 then
begin
zd := zd + 1
end;
if zd > 1 then
begin
Result := true;
end
else
begin
Result := False;
end;
end;
end;
 
用DBEdit,不就行吗,不用写代码.
 
后退
顶部