TFlexCelUserFunction Class
A class used to define a FlexCel user function, that you can call from a report.
To Create a User function:
- Create a new class derived from TFlexCelUserFunction.
- Override the method Evaluate.
- Add the new user function to the report using TFlexCelReport.SetUserFunction.
Syntax
Unit: FlexCel.Report
TFlexCelUserFunction = class(TFlexCelObject);
Methods
| Name | Description | 
| Evaluate | Override this method on a derived class to implement your own defined function. 
 | 
Examples
To define a user function that returns "One" for param = 1; "Two" for param = 2 and "Unknown" on any other case: 1) Define the class:
  TMyUserFunction = class (TFlexCelUserFunction)
  public
    constructor Create;
    function Evaluate(const parameters: TFormulaValueArray): TReportValue; override;
  end;
...
function TMyUserFunction.Evaluate(const parameters: TFormulaValueArray): TReportValue;
var
  d: double;
  p: Int32;
begin
  if (Length(parameters) <> 1) then
    raise Exception.Create('Invalid number of parameters for user defined function "MyUserFunction"');
  if not parameters[0].TryToDouble(d, false) then raise Exception.Create('The first parameter must be a double.');
  if (d < -1000) or (d > 1000) then raise Exception.Create('The value of the parameter must be between -1000 and 1000');
  p := Round(d);
  case p of
    1:
    begin
      exit('One');
    end;
    2:
    begin
      exit('Two');
    end;
  end;
  Result := 'Unknown';
end;
2) Add the function to the report.
  myFuncImpl := TMyUserFunction.Create;  //The MyUserFunction class implements an user defined function.
  //Note that we don't have to free myFuncImpl, it will be freed by the report once it is over.
  flexCelReport.SetUserFunction('MF', myFuncImpl);  //The name used in Excel will be =MF().
3) Now, you can write "<#MF(1)>" on a template, and it will be replaced by "One".