打印发票时怎样填写大写金额?(50分)

  • 主题发起人 主题发起人 ljzk
  • 开始时间 开始时间
L

ljzk

Unregistered / Unconfirmed
GUEST, unregistred user!
发票格式为: 万 仟 佰 拾 元 角 分
怎样往空格处打印已经转换好的大写金额,空格处填写‘零’?
我是用的是QREPORT。
例:零万零仟零佰玖拾叁元肆角零分。
请贴个转换例子,谢谢!
 
每个位置放个lable
取出每一位的数字
用Case语句用中文代替数字
再赋值给lable
 
先按照要打印的内容在QReprot中排好!然后将发票上已经有的东西隐藏即可,只是对齐很
麻烦的,需要点耐心哦!
 
to:lanjiancn
怎样实现?是否在转换好的大写金额字符串中从左到右,逐个比较是否为数字?
请写段例子,谢谢!
 
给你一个参考
function TForm1.SmallTOBig(small_str: string): string;
var
SmallMonth,BigMonth:string;
wei1,qianwei1:string[2];
wei,qianwei,dianweizhi,qian:integer;
small:real;
begin
small:=StrToFloat(small_str);
{------- 修改参数令值更精确 -------}
qianwei:=-2;//小数点后的位置,需要的话也可以改动-2值
Smallmonth:=formatfloat('0.00',small);//转换成货币形式,需要的话小数点后加多几个零
dianweizhi :=pos('.',Smallmonth);//小数点的位置
for qian:=length(Smallmonth)do
wnto 1do
//循环小写货币的每一位,从小写的右边位置到左边
begin
if qian<>dianweizhi then
{如果读到的不是小数点就继续}
begin
case strtoint(copy(Smallmonth,qian,1)) of{位置上的数转换成大写}
1:wei1:='壹';
2:wei1:='贰';
3:wei1:='叁';
4:wei1:='肆';
5:wei1:='伍';
6:wei1:='陆';
7:wei1:='柒';
8:wei1:='捌';
9:wei1:='玖';
0:wei1:='零';
end;
//case
case qianwei of{判断大写位置,可以继续增大到real类型的最大值}
-3:qianwei1:='厘';
-2:qianwei1:='分';
-1:qianwei1:='角';
0 :qianwei1:='元';
1 :qianwei1:='拾';
2 :qianwei1:='佰';
3 :qianwei1:='千';
4 :qianwei1:='万';
5 :qianwei1:='拾';
6 :qianwei1:='佰';
7 :qianwei1:='千';
8 :qianwei1:='亿';
9 :qianwei1:='十';
10:qianwei1:='佰';
11:qianwei1:='千';
end;
//case
inc(qianwei);
BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}
end;
//if
end;
//for
SmallTOBig:=BigMonth;
end;

 
多人接受答案了。
 
后退
顶部