多语言展示
当前在线:1207今日阅读:27今日分享:41

FastReport中如何使用自定义函数

从新手的角度,描述FastReport自定义函数的使用
工具/原料

FastReport 版本:4.13.1

方法/步骤
1

例子:将金额转换为大写(备注:函数为网上下载) FastReport 版本:4.13.1

2

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;   --------------------------------------------

3

2、在FastReport设计标签页中添加memo控件,这里的memo控件名为:memo28然后在FastReport设计标签页选择memo28然后双击onbeforeprint事件,然后在代码页中的光标位置用代码引用自己编写的函数。引用方式如下:----------------------------     memo28.text:=MoneyToCharacter(SUM(,MasterData1)) ;  -----------------------------

4

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

5

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(,MasterData1)) ; end;  begin       end. ----------------------------------------

推荐信息