var
ChildDataLine : Integer;
// 子数据打印完一项时
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
ChildDataLine := <line> mod 4;
end;
// 某项主数据的子数据打印完后准备打印主数据的最后页时
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
var
I :Integer;
begin
if (ChildDataLine>0) and (ChildDataLine<4) then // 子数据数量不是4的倍数
begin
I := 4 - ChildDataLine;
while I>0 do // 填充空白子数据
begin
Engine.ShowBand(Child2); // Child2 设计空白与子数据块相同高度、边框
Dec(I);
end;
end;
end;
// 子数据打印前
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
// 子数据 不是第一页(也不是最后一页),刚刚打印的是否是4的倍数行,是则新页
if (<line> >1) and ((<line> -1) mod 4 =0) then
begin
Engine.ShowBand(Child1); // 主数据的后面部份
Engine.NewPage; // 新页
Engine.ShowBand(Child1); // 主数据的后面部份
end;
// 注:
// 主数据的前面数据 在第一条子数据时打印的是 GroupHeader
// 主数据的后面数据 最后页打印的是 GroupFooter
end;
==================================================================
var
PageLine: integer;
PageMaxRow: integer=10;
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
PageLine := <line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then
Engine.newpage;
end;