--------------------------------------------- Article: Forcing a Page Break ---------------------------------------------
Question:
How can I force a page break occur based upon a condition calculated at run-time.
2 of the best solutions follow:
Solution 1:
Define a Group that starts on a new page when it breaks. Then use the Group.OnGetBreakValue event to control the timing of the break.
1. From the Report Designer, select Report | Groups to access the Group dialog.
2. Define a group based upon a static component, such as a Label or Variable. Click the Start new page checkbox. Close the dialog.
3. Using the object inspector's drop down list, find and select the TppGroup object.
4. Create an event-handler for the Group's OnGetBreakValue event.
5. Add code to set the break value.
procedure Form1.Group1OnGetBreakValue(Sender: TObject; var aBreakValue: String); begin
if condition then aBreakValue := 'Some Value';
end;
Solution 2:
1. Place a subreport at the point where you might want a page break.
2. Remove its summary band and reduce the height of its detail and title bands to zero.
By programmatically setting the title band's NewPage property you can conditionally force a page break. Note that everything after the subreport that is in the same band with it will need to ShiftRelativeTo the subreport.
Comments
Article: Forcing a Page Break
---------------------------------------------
Question:
How can I force a page break occur based upon
a condition calculated at run-time.
2 of the best solutions follow:
Solution 1:
Define a Group that starts on a new page when
it breaks. Then use the Group.OnGetBreakValue
event to control the timing of the break.
1. From the Report Designer, select Report | Groups
to access the Group dialog.
2. Define a group based upon a static component,
such as a Label or Variable. Click the
Start new page checkbox. Close the dialog.
3. Using the object inspector's drop down list,
find and select the TppGroup object.
4. Create an event-handler for the Group's
OnGetBreakValue event.
5. Add code to set the break value.
procedure Form1.Group1OnGetBreakValue(Sender: TObject; var aBreakValue:
String);
begin
if condition then
aBreakValue := 'Some Value';
end;
Solution 2:
1. Place a subreport at the point where you might want a page break.
2. Remove its summary band and reduce the height of its detail and
title bands to zero.
By programmatically setting the title band's NewPage property you can
conditionally force a page break. Note that everything after the
subreport that is in the same band with it will need to
ShiftRelativeTo the subreport.
--
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com