FastReport调用Delphi中的自定义函数(人民币大写金额)

人民币大写金额转换函数

复制代码
 1 function MoneyToCn(ANumberic: Real): string;
 2 const
 3   s1: string = '零壹贰叁肆伍陆柒捌玖';
 4   s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万';
 5 
 6 function StrTran(const S, s1, s2: string): string;
 7 begin
 8   Result := StringReplace(S, s1, s2, [rfReplaceAll]);
 9 end;
10 var
11   S, dx: string;
12   i, Len: Integer;
13 
14 begin
15   if ANumberic < 0 then
16   begin
17     dx := '';
18     ANumberic := -ANumberic;
19   end;
20 
21   S := Format('%.0f', [ANumberic * 100]);
22   Len := Length(S);
23   for i := 1 to Len do
24   dx := dx + Copy(s1, (Ord(S[i]) - Ord('0')) * 2 + 1, 2) + Copy(s2, (Len - i)* 2 + 1, 2);
25 
26   dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零仟', ''), '零佰',''),'零拾', ''), '零角', ''), '零分', 
27     '');
28   dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零零', ''), '零零',''),'零亿', '亿'), '零万', ''), '零元', 
29     '');
30   if dx = '' then
31     Result := '零元整'
32   else
33     Result := StrTran(StrTran(dx, '亿万', '亿零'), '零整', '');
34 end;
复制代码

在Create中向FastReprot添加函数

1 procedure Create(Sender: TObject);
2 begin
3   frxReport1.AddFunction('function MoneyToCn(ANumberic: Real): String;','Myfunction','人民币大写金额转换函数');
4 end;

在FastReport用户函数事件中添加

1 function frxReport1UserFunction(const MethodName: string; var Params: Variant): Variant;
2 begin
3   if UpperCase(MethodName) = UpperCase('MoneyToCn') then
4   Result := MoneyToCn(Params[0]);
5 end;

 

posted @   Thenext  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2021-01-20 Postgresql 扩展函数记录
点击右上角即可分享
微信分享提示