我已经设置了edit,让它只能输入数字和小数点,但是没办法让它自动增加千分符,
如果能够在输入完成之后变成千分位格式,那也行,
请教各位,在DELPHI里能否实现这个?
如输入:1234567,希望它变成:1,234,567
不过,当把这个edit存入数据库时,它仍然按照1234567存入,加上千分符也不知道它能不能识别
在论坛上得到了很多帮助,先谢谢大家了
如果能够在输入完成之后变成千分位格式,那也行,
请教各位,在DELPHI里能否实现这个?
如输入:1234567,希望它变成:1,234,567
不过,当把这个edit存入数据库时,它仍然按照1234567存入,加上千分符也不知道它能不能识别
在论坛上得到了很多帮助,先谢谢大家了
http://topic.csdn.net/u/20090402/13/ddcd4364-9862-49b8-96f2-f337854bc8e4.html
http://hi.baidu.com/bakyman/blog/item/5f6fb08b743f61e3f11f364b.html
begin
Edit1.text:= formatfloat('####.#######',strToFloat(stringreplace(Edit1.text,',','',[rfReplaceAll])));
end;procedure TForm1.Edit1Exit(Sender: TObject);
begin
Edit1.text := formatfloat('#,###.#######',strToFloat(Edit1.text));
end;自己再判断一下,Edit1有没有内容或者是不是数字
exit里给数据加上千分位
可是,如果我的数据没有小数,只有整数,数据库里字段也是整数,该怎么写呢?
有formatint这种函数吗?
procedure TFinput_ZZ.btnSaveClick(Sender: TObject);
var firstNum :single;begin firstNum := (formatfloat('####.##',strToFloat(stringreplace(Edtnh.text,',','',[rfReplaceAll]))))*1000;
\\这句运行后出错:incompatible types 'string' and 'integer'请问这个错误:这句运行后出错:incompatible types 'string' and 'integer'
请问该怎么改,说是类型错误
自己测试一下,随便输几个数字看看结果(整数,负数,小数都行)
formatfloat返回的结果是string类型,怎么能跟1000再相乘呢?firstNum:=StrToFloat(stringreplace(Edtnh.text,',','',[rfReplaceAll]))*1000
begin
//
if intValue = '' then
Result := ''
else
begin
intValue := StringReplace(intValue, ',', '', [rfReplaceAll]);
intValue := StringReplace(intValue, ',', '', [rfReplaceAll]);
Result := formatfloat('#,###,##0', StrToFloat(intValue));
end;
end;function FloatFormat(floatValue: string): string;
var
decPart, intPart: string;
i, j: Integer;
numFormat: string;
begin
//
if floatValue = '' then
Result := ''
else
begin
floatValue := StringReplace(floatValue, ',', '', [rfReplaceAll]);
floatValue := StringReplace(floatValue, ',', '', [rfReplaceAll]);
floatValue := Format('%.*n', [18, StrToFloat(floatValue)]); //小数点后18位,没办法再加了,到20的话,超出了
i := pos('.', floatValue);
if i > 0 then //有小数点
begin
intPart := Copy(floatValue, 1, i - 1);
decPart := copy(floatValue, i + 1, Length(floatValue));
//从后边开始清除0
for j := Length(decPart) downto 1 do
begin
if decPart[j] = '0'
then Delete(decPart, j, 1)
else
Break;
end;
end
else //无小数点
begin
intPart := floatValue;
decPart := '';
end; if decPart <> '' then
Result := intPart + '.' + decPart
else
Result := intPart;
end;
end;
记得在保存的时候把,号全部给替换掉。输出的时候,用intformat或者floatformat即可。 if (tmpEdit.Text <> '') then
if (ColObject.T_COL_SJLX in [ftFloat, ftCurrency, ftFMTBcd, ftBCD]) then
begin
tmpEdit.Text := FloatFormat(tmpEdit.Text);
end
else if (ColObject.T_COL_SJLX in [ftDate, ftDateTime]) then
begin
tmpEdit.Text := DateFormat(tmpEdit.Text);
end
else if (ColObject.T_COL_SJLX in [ftLargeint]) then //旧表移植时发现还需要增加BigInt的处理
tmpEdit.Text := intFormat(tmpEdit.text);
end;
也谢谢大家的回复