Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

TdxSpreadSheetFunction Type

The procedural type for implementation routines of spreadsheet function signatures.

#Declaration

Delphi
TdxSpreadSheetFunction = procedure(Sender: TdxSpreadSheetFormulaResult; const AParams: TdxSpreadSheetFormulaToken);

#Parameters

Name Type
Sender TdxSpreadSheetFormulaResult
AParams TdxSpreadSheetFormulaToken

#Remarks

A function signature’s implementation routine:

  • Evaluates accepted parameters for possible errors and extracts the parameters from a function call token (via the AParams parameter) in a parsed formula expression.

  • Uses the extracted parameters to perform calculations.

  • Populates the result token (via the Sender parameter) with one or more calculated results according to the function signature’s ResultKind field value.

The following code example shows how to implement a function that calculates the area of a triangle (S) given two sides (a and b) and the angle (γ, in degrees) between them according to the formula: S = 0.5 * a * b * sin γ.

procedure functionTriangleArea(Sender: TdxSpreadSheetFormulaResult; const AParams: TdxSpreadSheetFormulaToken);
var
  P1, P2, P3: Variant;  // The function accepts three numeric parameters
begin
  if(Sender.GetParamsCount(AParams) <> 3) then  // The function has three mandatory parameters
    Sender.SetError(ecValue)  // The function inserts the #VALUE! error code into the result token instead of a calculated value if the parameter count is incorrect
  else
// The function consecutively extracts the three numeric values from a formula call token into the P1, P2, and P3 temporary variables
    if(Sender.ExtractNumericParameter(P1, AParams, 0) and
      Sender.ExtractNumericParameter(P2, AParams, 1) and
      Sender.ExtractNumericParameter(P3, AParams, 2)) then
// The function calculates the area of a triangle if all parameters are successfully extracted as numeric values
      Sender.AddValue(0.5 * P1 * P2 * SIN(P3 * Pi / 180));  // Inserts the calculated result into the result token
end;

A function signature’s Proc field references the TdxSpreadSheetFunction procedural type.

See Also