输入一个金额数据,怎么按万千百元角分打印出来???(100分)

  • 主题发起人 主题发起人 cfeeling
  • 开始时间 开始时间
C

cfeeling

Unregistered / Unconfirmed
GUEST, unregistred user!
近日做财务票据打印,遇到一问题,
在edit1中输入一个金额数据,怎么才能按千百元角分打印在票据上规定栏位里????
本人用的使fastreport.
请各位帮忙
 
做一个转换函数,把数字变成“千百元。。。”的金额字符串。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
function SmallTOBig(small_str: string): string;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := smalltobig('12345.67');
end;

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;
end.
 
两种格式, 一种是套打, 就是单据上已经有"万仟佰拾元角分"这些字,
要把数字转为"壹贰叁"..., 并且放到合适的位置, 另一种是要把金额
转换为大写, 符合口语习惯, 例如 1001.1, 转换为壹仟零壹元壹角整
 
设置2种:
1。我上面修改了一下,作为转换为“壹仟零壹元壹角整”的那种。
2。你再做一个,把“万仟佰拾元角分”转换回来“ ”,合适的空格就可以了。
 
楼上的几位可能误解了.
我要打的不是大写金额的转换 ,而是小写金额.
 
(晕~,看语气,我还以为3楼是楼主呢,4楼也白写了。)
回上楼,那就取了数字换成字符一个一个打印在相应的位置啊。
 
数字换成字符是很容易办到的.
但关键是票据上的都是按千百元角分划分栏位的,在每个栏位上输入该栏位的数值.
如果是1234.78元,则按"千位,百位,十位,元位,角位,分位"分别打印1 2 3 4 7 8.
如果是1234567.89,则打印1 2 3 4 5 6 7 8 9也是在各自的栏位.
麻烦的就是金额的位数不确定,而不论几位,角,分都是必须有数字打印上去的,
 
我有一个打印金额的DEMO,不过是基于FR的ReportMachine做的,要的话就留个EMAIL吧
 
有没有fastreport的???
楼上的,我的 email:benben3000@163.net
 
选合适的字体就可以了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
556
import
I
I
回复
0
查看
687
import
I
后退
顶部