ReportInterface describes a "page" (or piece of paper) as the target of report output, having dimensions given by properties PaperHeight and PaperWidth. Within the page is a printable area indicated by functions PaperLeft, PaperTop, PaperRight and PaperBottom, or set via individual properties PaperMarginLeft, PaperMarginTop, PaperMarginRight and PaperMarginBottom, or collectively via procedure SetPaperMargins.

Paper boundaries

The printable area constitutes a "default band" in which you can output report elements (although you are not strictly confined to the printable area as such).
A band is really just a "logical print area" defined on the page by properties:

  • BandLeft
  • BandTop
  • BandRight
  • BandBottom.

For the default printable area band, these properties correspond to the matching "Paper" properties:

  • PaperLeft
  • PaperTop
  • PaperRight
  • PaperBottom

Frame Bands

Optionally, ReportInterface can then logically structure the default band using a "framework" which imposes more detailed bands on the page space and a cyclic flow (or "code loop") to progress through a report. A whole sequence of "before and after" type events permit close control of the reporting process.

The primary framework component is a "TPageFrame" which introduces fixed header and footer bands, and dynamic report body bands in between. Most reports would be based on a TPageFrame component, but it is not explicitly required.

Frame Bands

A PageFrame allows you to (optionally) utilise the following bands:

  1. Fixed Header Bands (band height is preset)
    1. Letterhead
    2. PageHeader
  2. Dynamic Body Bands (bands fill the available space)
    1. BodyTitle
    2. BodyHeader
    3. Group Header
    4. Row
    5. GroupFooter
    6. BodyFooter
  3. Fixed Footer Bands (band height is preset)
    1. Letterfoot
    2. Remittance

More Frames & Bands

Additional TMasterFrame and TDetailFrame components can be added and executed serially or with unlimited nesting at any point in a report.

Each provides a further "code loop" with corresponding events and its own dynamic bands (fitting within the "dynamic body" region of the PageFrame "page" illustrated above, or in the printable area default band if a PageFrame is not used). In all cases the "bands" are logical constructs that are automatically and dynamically defined only if you choose to write code in the respective band output events.

All bands can be predefined with default fonts and line tab settings which are automatically applied every time the band is output (FontIndex and TabIndex band properties). A band can also be set to trip a new page based on minimum line count or print height constraints (MinLines and MinHeight band properties).

Specialist frame components include TLabelFrame for generating mailing or name labels, and TColumnFrame for implementing newspaper style columns. Again, these frames have an inherent control "code loop", reporting "bands" and events.

See the following examples for illustrations of the control flow and events that the various frame components expose for a report.