Report Object Loop

TECH TIP: Loop Thru All Objects in a Report

A ReportBuilder report is composed of a set of components. The basic structure is:

Reports.Bands[].Objects[]

The bands and objects within the report can be accessed directly by object name or via the Bands and Objects array properties.

Below is an example of using the Bands and Objects array properties to change the font for all objects on a report.

Note that if you would like to loop through subreports within the report as well, you will need to add logic to recursively call the report object loop for each subreport when it is found.

uses
 ppClass,
 ppSubRpt;


procedure AssignFontToReport(aFont: TFont; aReport: TppCustomReport);
var
  liBand: Integer;
  liObject: Integer;
  lObject: TppComponent;

begin

  for liBand := 0 to aReport.BandCount-1 do

     for liObject := 0 to aReport.Bands[liBand].ObjectCount-1 do
       begin
         lObject := aReport.Bands[liBand].Objects[liObject];
         
         //if the object is a subreport make a recursive call to this routine.
         if (lObject is TppSubreport) then
           AssignFontToReport(aFont, TppSubreport(lObject).Report);

         if lObject.HasFont then
           lObject.Font := aFont;

       end;

end;