Skip to main content
A newer version of this page is available. .

ChartControl.RegisterSummaryFunction(String, String, ScaleType, Int32, SummaryFunctionArgumentDescription[], SummaryFunction) Method

Registers the custom summary function with the specified settings.

Namespace: DevExpress.XtraCharts

Assembly: DevExpress.XtraCharts.v18.2.UI.dll

Declaration

public void RegisterSummaryFunction(
    string name,
    string displayName,
    ScaleType resultScaleType,
    int resultDimension,
    SummaryFunctionArgumentDescription[] argumentDescriptions,
    SummaryFunction function
)

Parameters

Name Type Description
name String

A String value containing the function’s name.

displayName String

A String value containing the function’s display name, which is used for localization purposes.

resultScaleType ScaleType

A ScaleType enumeration value representing the type of the function’s result.

resultDimension Int32

An integer value representing the dimension of the resulting series point’s values.

argumentDescriptions SummaryFunctionArgumentDescription[]

An array of SummaryFunctionArgumentDescription objects containing argument descriptions.

function SummaryFunction

A SummaryFunction delegate to be registered.

Remarks

The RegisterSummaryFunction method is intended to register custom summary functions within a chart control. To unregister a specific summary function, the ChartControl.UnregisterSummaryFunction method should be called. Also, you may remove all custom summary functions from the chart, and add all default functions to it by calling the ChartControl.ResetSummaryFunctions method.

Example

The following example demonstrates how to create a custom summary function, which returns an OHLC point calculated by the passed array of values. To accomplish this task, create a SummaryFunction delegate and register it using the ChartControl.RegisterSummaryFunction method:

// Declare the Financial summary function. 
private static SeriesPoint[] CalculateProductValue( 
        Series series, 
        object argument, 
        string[] functionArguments, 
        DataSourceValues[] values, 
        object[] colors
) { 
    string functionArgument = functionArguments[0]; 
    int lastIndex = values.Length - 1; 

    double open = Convert.ToDouble(values[0][functionArgument], CultureInfo.InvariantCulture); 
    double close = Convert.ToDouble(values[lastIndex][functionArgument], CultureInfo.InvariantCulture); 
    double high = Math.Max(open, close); 
    double low = Math.Min(open, close); 
    for (int i = 1; i < lastIndex; i++) { 
        high = Math.Max(high, Convert.ToDouble(values[i][functionArgument], CultureInfo.InvariantCulture)); 
        low = Math.Min(low, Convert.ToDouble(values[i][functionArgument], CultureInfo.InvariantCulture)); 
    } 
    // Return the result. 
    return new SeriesPoint[] { 
        new SeriesPoint(argument, high, low, open, close) 
    }; 
} 

private void Form1_Load(object sender, EventArgs e) { 
    chartControl.DataSource = new CurrencyRateLoader("../../Data/EurUsdRate.xml").Load();
    // Register the summary function in a chart. 
    chartControl.RegisterSummaryFunction( 
            name: "FINANCIAL", 
            displayName: "Financial", 
            resultScaleType: ScaleType.Numerical, 
            resultDimension: 4, 
            argumentDescriptions: new SummaryFunctionArgumentDescription[] { 
                new SummaryFunctionArgumentDescription("Value", ScaleType.Numerical) 
            }, 
            function: CalculateProductValue
    );

    Series series = chartControl.Series["EurUsd"]; 
    series.ArgumentDataMember = "DateTime";
    // Note that ValueDataMembers are not specified.
    series.SummaryFunction = "FINANCIAL([Value])"; 
}

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the RegisterSummaryFunction(String, String, ScaleType, Int32, SummaryFunctionArgumentDescription[], SummaryFunction) method.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

See Also