To set a page margin condition formula in the report's print options

Parent Previous Next

 

Report Application Server .NET SDK Developer Guide

To set a page margin condition formula in the report's print options


 







  1. Use the PrintOutputController to retrieve and instance of the PrintOptions object saved with the report.

Visual Basic

Dim printOutputController As PrintOutputController = rcd.PrintOutputController
Dim printOptions As PrintOptions = printOutputController.GetPrintOptions()

C#

PrintOutputController printOutputController = reportClientDocument.PrintOutputController; 
PrintOptions printOptions = printOutputController.GetPrintOptions();

  1. Clone the PrintOptions object.

Visual Basic

Dim newPrintOptions As PrintOptions = DirectCast(printOptions.Clone(True), PrintOptions)

C#

PrintOptions newPrintOptions = (PrintOptions)printOptions.Clone(true);

  1. Retrieve the PageMargins object.

Visual Basic

Dim newMargins As PageMargins = newPrintOptions.PageMargins

C#

PageMargins newMargins = newPrintOptions.PageMargins;

  1. Create a new PageMarginConditionFormulas and IConditionFormula object.

Visual Basic

Dim formulas As New PageMarginConditionFormulas()
Dim condFormula As New ConditionFormula()

C#

PageMarginConditionFormulas formulas = new PageMarginConditionFormulas();
ConditionFormula condFormula = new ConditionFormula();

  1. Set the formula syntax and text.

Visual Basic

Dim formulaText As String = "If Remainder(pagenumber,2) = 0 then 1440 else 2880"
condFormula.Syntax = CrFormulaSyntaxEnum.crFormulaSyntaxCrystal
condFormula.Text = formulaText
formulas(CrPageMarginConditionFormulaTypeEnum.crPageMarginConditionFormulaTypeLeft) = condFormula

C#

String formulaText = "If Remainder(pagenumber,2) = 0 then 1440 else 2880";
condFormula.Syntax = CrFormulaSyntaxEnum.crFormulaSyntaxCrystal;
condFormula.Text = formulaText;
formulas[CrPageMarginConditionFormulaTypeEnum.crPageMarginConditionFormulaTypeLeft] = condFormula;

  1. Set the formulas in the PageMargins object and set the new margins in thePrintOptions object.

Visual Basic

newMargins.PageMarginConditionFormulas = formulas
newPrintOptions.PageMargins = newMargins

C#

newMargins.PageMarginConditionFormulas = formulas;
newPrintOptions.PageMargins = newMargins;

  1. Use the PrintOutputController to modify the print options of the report.

Visual Basic

printOutputController.ModifyPrintOptions(newPrintOptions)

C#

printOutputController.ModifyPrintOptions(newPrintOptions);

This sample creates a formula that checks whether a page number is even or odd and sets the margins accordingly: if the page is an even number, the margin is set to one inch; if the page is an odd number, the margin is set to two inches. The formula is applied to the left margin of the report.

Visual Basic

Private Sub SetPageMarginConditionFormulaPrintOptions(ByVal rcd As ISCDReportClientDocument)
 Dim printOutputController As PrintOutputController = rcd.PrintOutputController
 Dim printOptions As PrintOptions = printOutputController.GetPrintOptions()
 
 Dim newPrintOptions As PrintOptions = DirectCast(printOptions.Clone(True), PrintOptions)
 Dim newMargins As PageMargins = newPrintOptions.PageMargins
 Dim formulas As New PageMarginConditionFormulas()
 Dim condFormula As New ConditionFormula()
 Dim formulaText As String = "If Remainder(pagenumber,2) = 0 then 1440 else 2880"
 condFormula.Syntax = CrFormulaSyntaxEnum.crFormulaSyntaxCrystal
 condFormula.Text = formulaText
 formulas(CrPageMarginConditionFormulaTypeEnum.crPageMarginConditionFormulaTypeLeft) = condFormula
 newMargins.PageMarginConditionFormulas = formulas
 newPrintOptions.PageMargins = newMargins
 printOutputController.ModifyPrintOptions(newPrintOptions)
End Sub

C#

private void SetPageMarginConditionFormulaPrintOptions(ISCDReportClientDocument rcd)
{
 PrintOutputController printOutputController = rcd.PrintOutputController;
 PrintOptions printOptions = printOutputController.GetPrintOptions();
 
 PrintOptions newPrintOptions = (PrintOptions)printOptions.Clone(true);
 PageMargins newMargins = newPrintOptions.PageMargins;
 PageMarginConditionFormulas formulas = new PageMarginConditionFormulas();
 ConditionFormula condFormula = new ConditionFormula();
 String formulaText = "If Remainder(pagenumber,2) = 0 then 1440 else 2880";
 condFormula.Syntax = CrFormulaSyntaxEnum.crFormulaSyntaxCrystal;
 condFormula.Text = formulaText;
 formulas[CrPageMarginConditionFormulaTypeEnum.crPageMarginConditionFormulaTypeLeft] = condFormula;
 newMargins.PageMarginConditionFormulas = formulas;
 newPrintOptions.PageMargins = newMargins;
 printOutputController.ModifyPrintOptions(newPrintOptions);
}

This list includes the namespaces used by the sample code:

© 2021 SAP AG. All rights reserved.

http://www.sap.com/sapbusinessobjects/

Support services

http://service.sap.com/bosap-support/

Created with the Personal Edition of HelpNDoc: Full-featured Help generator