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

  • 相关阅读:
    树状数组简述
    八皇后
    小木棍
    智力大冲浪
    晚餐队列安排
    修理牛棚
    转圈游戏
    关押罪犯
    借教室
    跳石头
  • 原文地址:https://www.cnblogs.com/usegear/p/15414686.html
Copyright © 2011-2022 走看看