• FastReport FR 报表 自定义函数 人民币大小写转换


    控件版本是:
    ----------
    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)


  • 相关阅读:
    线性DP SGU167 I-country
    背包问题 POJ1742 Coins
    背包问题 codevs2210 数字组合
    dfs+贪心 BZOJ4027 [HEOI2015] 兔子与樱花
    spfa最短路+DP BZOJ1003 [ZJOI2006] 物流运输
    矩阵乘法 POJ3070 Fibonacci
    tarjan+spfa最短路 BZOJ1179 [Apio2009] Atm
    欧拉函数 BZOJ2190 [SDOI2008] 仪仗队
    矩阵乘法 洛谷 P3390【模板】矩阵快速幂
    裴蜀定理 BZOJ2299[HAOI2011] 向量
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/1876700.html
Copyright © 2020-2023  润新知