Report Script: Multi-line text line spacing (19)

From AutoCount Resource Center
Jump to navigation Jump to search

Introduction

XRLabel control is a text display that does not provide spacing between lines.
However, XRRichText control has the properties to set the text spacing between two lines. This tutorial shows how can be done with simple scripting.

Task in this tutorial

  • Replace XRLabel with XRRichText
  • Use RichEditDocumentServer to manipulate paragraph line spacing

Product

AutoCount Accounting 1.8 / 1.9
Applicable to AutoCount Accounting 2.0

VSProjectIcon.png Download Report Template (AutoCount Accounting 1.8 / 1.9)

Invoice (Spacing in Description with RichText)

ReportScript.TextLineSpacing.png

Report Design

  1. Replace the Label (XRLabel) that is bound to "Description" with Rich Text (XRRichText) control
  2. Change the (Name) to "xrRTItemDesc" (in Property Grid)
  3. Change font of xrRTItemDesc
    • Font Name = "Tahoma"
    • Font size = 9
  4. In Property Grid, Click [+] button of Scripts to reveal the events of this Rich Text
  5. Find Before Print, and click into the text box on the right
  6. Then click the arrow button, and click (New)
    Report Designer will switch to Scripts editor,
    and xrRTItemDesc_BeforePrint event is created.

Report Script

Add using directive

  1. Add directive at the top of Scripts, if has not already added.
    • using DevExpress.XtraRichEdit;
    • using DevExpress.XtraRichEdit.API.Native;

Add function call in xrRTItemDesc_BeforePrint event

private void xrRTItemDesc_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
	string desc = DetailReport.GetCurrentColumnValue("Description").ToString();

	//Line spacing is set to 1.5 pt.
	//You may change the value of spacing, but always end with letter 'f'.
	(sender as XRRichText).Text = FormatLineSpacing(desc, 1.5f);
}

Add function of FormatLineSpacing

This function will format the line spacing of a text.

private string FormatLineSpacing(string text, float spacing)
{
	RichEditDocumentServer docServer = new RichEditDocumentServer();
	docServer.Text = text;
	docServer.Document.DefaultParagraphProperties.LineSpacingType = ParagraphLineSpacing.Multiple;
	docServer.Document.DefaultParagraphProperties.LineSpacingMultiplier = spacing;	
	return docServer.RtfText;
}


Go to menu

IconAC81.png Go to top
ProgrammerGo.jpg Resources For AutoCount Software Developers