FastReport中如何使用自定义函数
1、例子:将金额转换为大写(备注:函数为网上下载)FastReport 版本:4.13.1
2、在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、在FastReport设计标签页中添加memo控件,这里的memo控件名为:memo28然后在FastReport设计标签页选择memo28然后双击onbeforeprint事件,然后在代码页中的光标位置用代码引用自己编写的函数。引用方式如下:---------------------------- memo28.text:=MoneyToCharacter(SUM(<ADOQuery1."je">,MasterData1)) ;-----------------------------
4、注意事项:在设计报表页面中双击memo28的弹出窗口中引用公式是没有效果的,需要在code页面中用代码引用。
5、Code页的全部代码如下:-------颍骈城茇---------------------------------//这里是函数function MoneyToCharacter(Money:re锾攒揉敫al):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;beginend.----------------------------------------