xtrareports-403273-desktop-reporting-winforms-reporting-end-user-report-designer-for-winforms-api-and-customization-remove-a-function-from-the-expression-editor.md
You can remove a function from the Expression Editor. To do this, create a ReportExpressionEditorCustomizationService descendant, override the BeforeRun method, and delete the function from the ExpressionEditorContext.Functions collection.
The following code is a custom service that removes the “Abs” function from the list of available functions in the Expression Editor:
using DevExpress.Data.Controls.ExpressionEditor;
using DevExpress.XtraReports.UserDesigner;
using System.Linq;
namespace CustomFunctionForExpressionEditorExample
{
class CustomReportExpressionEditorCustomizationService : ReportExpressionEditorCustomizationService
{
public CustomReportExpressionEditorCustomizationService() {}
public override void BeforeRun(string expressionString,
IExpressionEditorView expressionEditorView,
ExpressionEditorContext expressionEditorContext)
{
FunctionInfo formatStringFunc = expressionEditorContext.Functions
.FirstOrDefault(x => x.Name == "Abs");
expressionEditorContext.Functions.Remove(formatStringFunc);
base.BeforeRun(expressionString, expressionEditorView, expressionEditorContext);
}
}
}
Imports DevExpress.Data.Controls.ExpressionEditor
Imports DevExpress.XtraReports.UserDesigner
Public Class CustomReportExpressionEditorCustomizationService
Inherits ReportExpressionEditorCustomizationService
Public Sub New()
End Sub
Public Overrides Sub BeforeRun(ByVal expressionString As String,
ByVal expressionEditorView As IExpressionEditorView,
ByVal expressionEditorContext As ExpressionEditorContext)
Dim formatStringFunc As FunctionInfo =
expressionEditorContext.Functions.FirstOrDefault(Function(x) x.Name = "Abs")
expressionEditorContext.Functions.Remove(formatStringFunc)
MyBase.BeforeRun(expressionString, expressionEditorView, expressionEditorContext)
End Sub
End Class
You should register the service at application startup:
{
DevExpress.XtraReports.Expressions.CustomFunctions.Register(new NewLineConstant());
// ...
typeof(DevExpress.XtraReports.UserDesigner.ReportExpressionEditorCustomizationService),
new CustomReportExpressionEditorCustomizationService());
reportDesigner1.OpenReport(new Reports.XtraReport1());
// ...
}
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
' ...
reportDesigner1.AddService(GetType(ReportExpressionEditorCustomizationService),
New CustomReportExpressionEditorCustomizationService())
' ...
End Sub
When you run the application, the Abs function is not shown in the list of available functions, but it remains valid and can be evaluated in expressions:
View Example: Expression Editor - How to Implement a Custom Function
See Also