zoukankan      html  css  js  c++  java
  • TDXSpreadSheet中自定义公式函数三大步骤

    看其demo:CustomFunctionDemo。

    在报表系统中,特别是财务等报表系统中。需要对固定格式的报表中cell定义取数公式。

    如新中大中:

    公式

    返回值

    gs_dwmc(预算单位代码/名称简写,账套,年度) 预算单位名称
    gs_mjkm(末级科目代码/名称简写,账套,年度) 末级科目名称  

     如果我们使用dxSpreadSheet时,如何定义自己的函数公式,以取得数据库等相关数据记录和计算结果呢?

    三大步:

    1 resourcestring
      sTriangleArea = 'TriangleArea';

    implementation

    {$R *.dfm}

    uses
      dxSpreadSheetCoreFormulasTokens
    2 procedure fpiTriangleArea(var AParamCount: Integer; var AParamKind: TdxSpreadSheetFunctionParamKindInfo);
    begin
      AParamCount := 3;
      SetLength(AParamKind, AParamCount);
      AParamKind[0] := fpkValue;
      AParamKind[1] := fpkValue;
      AParamKind[2] := fpkValue;
    end;
    3 procedure fnTriangleArea(Sender: TdxSpreadSheetFormulaResult; const AParams: TdxSpreadSheetFormulaToken);
    var
      P1, P2, P3: Variant;
    begin
      if Sender.GetParamsCount(AParams) <> 3 then
        Sender.SetError(ecValue)
      else
        if Sender.ExtractNumericParameter(P1, AParams) then
          if Sender.ExtractNumericParameter(P2, AParams, 1) then
            if Sender.ExtractNumericParameter(P3, AParams, 2) then
              Sender.AddValue(0.5 * P1 * P2 * SIN(P3 * Pi / 180));
    end;
    4

    注册:

    dxSpreadSheetFunctionsRepository.Add(@sTriangleArea, fnTriangleArea, fpiTriangleArea, frkValue, 2048, ftMath);

    5

    如此,你就可以在表格中,可直接插入使用公式。or用代码:

    SpreadSheet.ActiveSheetAsTable.CreateCell(12, 5).SetText(StringReplace('=TriangleArea(F9,F10,F11)',
        ',', SpreadSheet.FormulaController.FormatSettings.Data.ListSeparator, [rfReplaceAll, rfIgnoreCase]), True);

  • 相关阅读:
    ACM学习历程—UESTC 1219 Ba Gua Zhen(dfs && 独立回路 && xor高斯消元)
    ACM学习历程—BZOJ 2115 Xor(dfs && 独立回路 && xor高斯消元)
    ACM学习历程—HDU 5536 Chip Factory(xor && 字典树)
    ACM学习历程—HDU 5534 Partial Tree(动态规划)
    ACM学习历程—HDU 3949 XOR(xor高斯消元)
    CSS 负边距读后感
    移除input number上的spinner
    js另类值交换
    自己写js库,怎么支持AMD
    <strong>和 <b> 的区别
  • 原文地址:https://www.cnblogs.com/usegear/p/15414686.html
Copyright © 2011-2022 走看看