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);

  • 相关阅读:
    概率图模型课堂笔记:2.4 取样方法
    概率图模型课堂笔记:2.2 置信度传播
    2018秋季学期学习总结
    人生路上影响最大的三位老师
    抓老鼠啊~亏了还是赚了?
    币值转换
    自我介绍
    打印沙漏
    2019春第七周作业
    第六周编程总结
  • 原文地址:https://www.cnblogs.com/usegear/p/15414686.html
Copyright © 2011-2022 走看看