FastReport 版本:4.13.1

1、在FastReport代码页中编写金额转换大写函数

将下面虚线内的代码复制到代码页上方

 --------------------------------------------

//这里是函数
function MoneyToCharacter(Money:real):string; //数字转换为中文大写
var
    temp:string;
    resu:string;
    i,j:integer;
    len:integer;
    Num:array[0..9] of string;
    A:array[0..13] of string;
begin
     Num[0]:='零';
     num[1]:='壹';
     Num[2]:='贰';
     num[3]:='叁';
     Num[4]:='肆';
     num[5]:='伍';
     Num[6]:='陆';
     num[7]:='柒';
     Num[8]:='捌';
     num[9]:='玖';
     a[0]:='分';
     a[1]:='角';
     a[2]:='元';
     a[3]:='拾';
     a[4]:='佰';
     a[5]:='仟';
     a[6]:='万';
     a[7]:='拾';
     a[8]:='佰';
     a[9]:='仟';
     a[10]:='亿';
     a[11]:='拾';
     a[12]:='佰';
     a[13]:='仟';
 
     temp:=trim(inttostr(round(money*100)));
     len:=length(temp);
     resu:='';
     if (len>13) or (len=0) then
       begin
         exit;
       end;
     for i:=1 to len do
     begin
         j:=strtoint(copy(temp,i,1));
         resu:=resu+num[j]+a[len-i];
     end;
     result:=resu;
end;
 

2、在FastReport设计标签页中添加memo控件,这里的memo控件名为:memo28

然后在FastReport设计标签页选择memo28然后双击onbeforeprint事件,然后在代码页中的光标位置用代码引用自己编写的函数。引用方式如下:

-————————— 

    memo28.text:=MoneyToCharacter(SUM(<ADOQuery1."je">,MasterData1)) ; 

-----------------------------

注意事项:在设计报表页面中双击memo28的弹出窗口中引用公式是没有效果的,需要在code页面中用代码引用。

Code页的全部代码如下:

//这里是函数
function MoneyToCharacter(Money:real):string; //数字转换为中文大写
var
    temp:string;
    resu:string;
    i,j:integer;
    len:integer;
    Num:array[0..9] of string;
    A:array[0..13] of string;
begin
     Num[0]:='零';
     num[1]:='壹';
     Num[2]:='贰';
     num[3]:='叁';
     Num[4]:='肆';
     num[5]:='伍';
     Num[6]:='陆';
     num[7]:='柒';
     Num[8]:='捌';
     num[9]:='玖';
     a[0]:='分';
     a[1]:='角';
     a[2]:='元';
     a[3]:='拾';
     a[4]:='佰';
     a[5]:='仟';
     a[6]:='万';
     a[7]:='拾';
     a[8]:='佰';
     a[9]:='仟';
     a[10]:='亿';
     a[11]:='拾';
     a[12]:='佰';
     a[13]:='仟';
     temp:=trim(inttostr(round(money*100)));
     len:=length(temp);
     resu:='';
     if (len>13) or (len=0) then
       begin
         exit;
       end;
     for i:=1 to len do
     begin
         j:=strtoint(copy(temp,i,1));
         resu:=resu+num[j]+a[len-i];
     end;
     result:=resu;
end;
//这里是自定义函数的引用
procedure Memo28OnBeforePrint(Sender: TfrxComponent);
begin
    memo28.text:=MoneyToCharacter(SUM(<ADOQuery1."je">,MasterData1)) ; 
end;
begin
end.

FastReport中如何使用自定义函数