Smart Layouts

ReportBuilder allows you to create highly dynamic report layouts. The SubReport, Memo, RichText, and Region components have the ability to expand or contract to accommodate the information they contain. There are a host of properties designed to keep your reports looking good in the variety of situations created by these dynamic components.


 Property Description 
 StretchWithParent Allows a shape or line to expand or contract based on the change in height of the band or region in which it is contained.

Use Anchors to ensure a component maintains its current position relative to an edge of its parent control (ie. Band/Region), even if the parent is resized. When its parent is resized, the component holds its position relative to the edges to which it is anchored.

 ShiftRelativeTo Used to specify the vertical positioning which should take place between multiple stretching components in a band.
  (for subreports)
Used to set the position on the page where a child type subreport will stop printing. Allows a child type subreport to be confined to a rectangular area of the page.
 BottomOffset Used to create white space between multiple stretching objects which have been linked together using the ShiftRelativeto property.
 OverFlowOffset Controls where a stretching component will begin printing when it overflows onto additional pages. This property can be used to print an object at a different starting position when it overflows onto additional pages.
 ReprintOnOverFlow Used to print non-stretching components again when stretching components are printing on additional pages.

One Memo with a Shape Background

Here we have a single memo in the detail band with a shape behind it. The shape has the StretchWithParent property set to True. The ‘parent,’ in this case, is the detail band. When the band generates, the memo will stretch based on the text it contains; the band will resize to accommodate the memo, and the shape will resize based on the change in height of the band. This action creates the effect of a border and background for the memo. If the memo overflows onto additional pages, we can instruct the shape to print also by setting the shape’s ReprintOnOverFlow property to True.

One Memo with Label Beneath

Here we have a single memo in the detail band with a label below it. The label has the ShiftWithParent property set to True. The ‘parent,’ in this case, is the detail band. When the band generates, the memo will stretch and band will increase or decrease in height accordingly. The label will shift based on the change in height of the band.

One Memo in the Detail Band

Here we have a single memo component in the detail band. The memo’s Stretch property has been set to True. Each time the detail band prints, the height of the memo is recalculated based on the amount of text it contains. As a result, the memo may either grow or shrink in size and the detail band will grow and shrink with it. The memo may contain so much text that it cannot fit on a single page. In this case, the memo will print on additional pages until it is complete. In ReportBuilder, this condition is referred to as overflow. Both the memo and band components have a boolean OverFlow property which can be checked while the report is generating to determine if the memo is printing on an additional page.

Two Side-by-Side Memos with Labels below

Here we have two memos in the detail band, each set to stretch. When the report generates, the band will grow or shrink to accommodate the memo that contains the most text. Each memo has an associated label below it. We want the labels to shift in relation to the memo above. In order to accomplish this, we place the labels in a region and then set the region’s ShiftRelativeTo property to point at the memo above. Now when the report is generated, each label shifts in relation to the associated memo.

One Memo with Two Side-by-Side Memos below

In this report we have single stretching memo that needs to print to completion, then two additional memos need to print, starting immediately after the first. By placing the second two memos in a region and setting the region’s ShiftRelativeTo property to point at the first memo, we can achieve this effect.

Two Stacked Memos in the Detail Band

This report requires two memos to be printed, one after the other. This requirement is met by setting the ShiftRelativeTo property of the second memo so that it points at the first. With this configuration, the first memo will print, stretching to accommodate the text it contains, and then the second memo will print to completion.

Child-Type SubReports in Fixed Positions

This report emulates a form that contains information in fixed rectangular areas of the page. By placing child-type subreports at the beginning of each rectangular area and setting the StopPosition property equal to the bottom of the rectangular area, we can get the report to ‘fill-out’ this form for us.