|
盒子资源分类 |
![]() |
|
|
|
FastReport 创建“人民币大小写转换”自定义函数 |
![]() |
关键字:FastReport FR 报表 自定义函数 人民币大小写转换 |
来 自:原创 |
平 台:Win2k/XP/NT,Win2003 |
下载所需:0 火柴 |
深浅度:中级 |
完成时间:2006/8/11 |
发布者:yangzh |
发布时间:2006/8/11 |
编辑器:BDS2006 |
语 种:简体中文 |
分 类:组件 |
下载浏览:0/19622 |
|
|
|
|
控件版本是: ---------- FastReport 3.23.12 Enterpise for d2006 (DeXter)
设置如下: ---------- function TJzpzEdit1.MoneyCn(mmje: Double): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万';
function StrTran(const S, s1, s2: string): string; begin Result := StringReplace(S, s1, s2, [rfReplaceAll]); end; var S, dx: string; i, Len: Integer; begin if mmje < 0 then begin dx := '负'; mmje := -mmje; end; S := Format('%.0f', [mmje * 100]); Len := Length(S); for i := 1 to Len do dx := dx + Copy(s1, (Ord(S[i]) - Ord('0')) * 2 + 1, 2) + Copy(s2, (Len - i) * 2 + 1, 2); dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零仟', '零'), '零佰', '零'), '零拾', '零'), '零角', '零'), '零分', '整'); dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零零', '零'), '零零', '零'), '零亿', '亿'), '零万', '万'), '零元', '元'); if dx = '整' then Result := '零元整' else Result := StrTran(StrTran(dx, '亿万', '亿零'), '零整', '整'); end; ////////// procedure TJzpzEdit1.FormCreate(Sender: TObject); begin frxReport1.AddFunction('function MoneyCn(mmje: Double): String;','Myfunction','小写金额转大写的函数'); end; ////////// function TJzpzEdit1.frxReport1UserFunction(const MethodName: string; var Params: Variant): Variant; begin if UpperCase(MethodName) = UpperCase('MoneyCn') then Result := MoneyCn(Params[0]); end; ////////// 报表中调用方法 MoneyCn(50000000) |
![]() |
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们! |
相关文章 |
|
![]() |
|
相关评论 |
![]() |
共有评论7条
当前显示最后6条评论
|
townch |
2006/8/12 12:57:17 |
3.23.12在哪里可以下载?目前只发现有3.23.9的。 |
yangzh |
2006/8/12 22:52:51 |
官方网站上就可以下载打印5页的企业版 |
ntjrr |
2006/9/29 21:05:07 |
前辈的金额大小写转换函数,不知道是否成熟,有没有经过长期的实践验证过? 我初步试了一下,发现这个比较好用,好象没有明显的BUG,我将再仔细一测.我本来有一个类似的函数,经过大量用户使用了,没有人提出问题,但我自己测试后发现在一元以内时会有小错误,要找一个没有BUG的金额转换函数好象很难. |
barcode |
2006/10/4 19:28:15 |
MDI环境中,第1个报表没问题,可多次开,再开第2个报表会报错,则所有用到此功能的报表都报错 |
aiicda |
2009/7/12 0:27:42 |
感谢楼主!!终于找到这东东了 |
recky |
2010/3/6 12:29:05 |
这代码如果是直接转换合计函数就会出错了。could not convert variant of type (array variant) into type(double) |
我要发表评论 |
查看全部评论 |
|
|
|