D7 如果设置EDIT或maskedit ,使输入数字进能变成千分位格式
我已经设置了edit,让它只能输入数字和小数点,但是没办法让它自动增加千分符,
如果能够在输入完成之后变成千分位格式,那也行,
请教各位,在DELPHI里能否实现这个?
如输入:1234567,希望它变成:1,234,567
不过,当把这个edit存入数据库时,它仍然按照1234567存入,加上千分符也不知道它能不能识别
在论坛上得到了很多帮助,先谢谢大家了
[解决办法]
raize里面有一个控件 可以达到你的效果
[解决办法]
既然是edit那么存入的就是字符串,如果想改变其内容又想保留原始结果需要自己写代码处理字符串或者用个临时变量存储改变前的int内容,另外1234567,希望它变成:1,234,567这问题记得很多人问过了
http://topic.csdn.net/u/20090402/13/ddcd4364-9862-49b8-96f2-f337854bc8e4.html
[解决办法]
Edit2.text := formatfloat('#,###.##',123323.23);
http://hi.baidu.com/bakyman/blog/item/5f6fb08b743f61e3f11f364b.html
[解决办法]
procedure TForm1.Edit1Enter(Sender: TObject);
begin
Edit1.text:= formatfloat('####.#######',strToFloat(stringreplace(Edit1.text,',','',[rfReplaceAll])));
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
Edit1.text := formatfloat('#,###.#######',strToFloat(Edit1.text));
end;
自己再判断一下,Edit1有没有内容或者是不是数字
[解决办法]
在edit的enter里把数据的千分位去掉
exit里给数据加上千分位
[解决办法]
ipedit !
[解决办法]
function IntFormat(intValue: string): string;
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;