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;
分享到:
相关推荐
下载提供的"fastreport固定行数分页不足补空白行"压缩包文件,解压后打开示例项目。查看源代码,理解其逻辑,然后运行项目,观察分页效果。在实际应用中,根据自己的需求调整行数设置和空白行的样式。 6. **注意...
动态分页是指在报告生成过程中,根据数据的实际内容而非固定的页数进行分页。这种分页方式更加灵活,可以根据数据的具体情况(如某字段的变化)自动调整页面布局,从而使得最终生成的报告更加符合用户的实际需求。 ...
- **换页打印固定行数**:在某些情况下,可能需要确保每页打印固定的行数,这需要合理安排报表的布局和数据分页逻辑。 - **自动折行与行高**:对于含有大量文本的报表,自动折行功能和行高的调整非常重要,以确保...
多页报告的设计考虑了页面布局和分页规则,确保数据在不同页面间正确分布,避免信息断裂或不完整展示。 #### 行数和页数属性 行数和页数属性用于跟踪报告中的记录数量和页面总数,对于大型报告的性能优化和预览...
2. **分页逻辑**:报表的每一页应包含固定数量的记录,这里是20行。我们需要在代码中计算数据集的大小,并根据每页行数确定分页信息。这可以通过遍历数据源,每次取出20条记录进行处理来实现。 3. **报表设计**:...
7. **控制每页行数**:为了确保数据能按需分页,开发者需要计算每页可以容纳的行数,并根据这个数目来分割数据,可能需要在代码中动态调整表格的高度和行间距。 8. **页眉和页脚**:在报表打印中,页眉通常包含报表...