FastReport分组打印并且指定每页行数(不足填空行)

简介: var  GPage,GIndex,FGIndex:integer;  PageList:array of integer;  PageLine: integer;         PageMaxRow: integer=28;            procedure PageFooter1OnB...

var
  GPage,GIndex,FGIndex:integer;
  PageList:array of integer;
  PageLine: integer;      
  PageMaxRow: integer=28;         
 
procedure PageFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  GPage := GPage + 1;
end;

procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
  GPage :=1;                                       
end;

procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
var
  i: integer;   
begin
  if Engine.FinalPass then  //二次遍历时增加分组索引
    FGIndex := FGIndex + 1
  else
  begin
    setLength(PageList,GIndex + 1);                                                                   
    PageList[GIndex] := GPage; //存放分组的总页数         
    GIndex := GIndex + 1;
  end;
  GPage := 0;

  i := iif(PageLine=0, PageMaxRow, PageLine);
  child1.visible := True;       
  while i < PageMaxRow do
  begin
    i := i + 1;
    Engine.ShowBand(Child1);  //印空白表格
  end;         
  child1.visible := False;      
end;

procedure Memo6OnBeforePrint(Sender: TfrxComponent);
begin
  if not Engine.FinalPass then exit;
  //Memo6.Lines[0] := '总页号:'+IntToStr(PageList[FGIndex]);
  Memo6.Lines[0] := '总页号:'+IntToStr(FGIndex+1);     
end;                                                                                                                                                                                

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  PageLine := <Line> mod PageMaxRow;
  if (PageLine = 1) and (<line> > 1) then
    Engine.newpage;
  child1.visible := False;
end;

//如果仅在最后一页补空行可用

{procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
  i: integer;   
begin
   i := iif(PageLine=0, PageMaxRow, PageLine);
  child1.visible := True;       
  while i < PageMaxRow do
  begin
    i := i + 1;
    Engine.ShowBand(Child1);  //印空白表格
  end;         
  child1.visible := False;      
end;}


begin
  FGIndex :=0;       
end.

FastReport界面为:

img_968e13e9daf253e4ea78244ea742ffa4.png

相关文章
|
Python
Python基础(输出五行五角星,数量每行递增/输出九九乘法表)
需求:在控制台连续输出五行*, 每一行星星的数量依次递增 思路:使用while循环输出五行内容, 依次输出数字1到5, 再使用数字乘以字符串'*', 即可在每行输出一个星星, 两个星星, ... 五个星星, 从而实现递增
786 1
Python基础(输出五行五角星,数量每行递增/输出九九乘法表)
|
6月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 171. Excel 表列序号 算法解析
☆打卡算法☆LeetCode 171. Excel 表列序号 算法解析
学C的第三天(多组输入的一种方法;简单了解函数,数组,多种操作符)-2
10.2:移位操作符(移动的是二进制位): >>(右移) <<(左移) 10.3:位操作符(操作的额也是二进制位): &(按位与) ^(按位异或) |(按位或)
L1-002 打印沙漏 (20 分)
L1-002 打印沙漏 (20 分)
151 0
|
存储 容器
混和头文件实战——7-49 打印学生选课清单(25 分)
混和头文件实战——7-49 打印学生选课清单(25 分) 这题有点容易超时,我试了很多方法,发现用map连接string和一个vector容器是比较好的办法,接下来就给大家介绍介绍~
284 0
混和头文件实战——7-49 打印学生选课清单(25 分)
|
编解码 开发工具 Windows
案例分享:Qt管道焊接参数条码打印系统(条码打印机TSC 244 Pro、打印条码、打印中文、打印字符、多张连续打印)
案例分享:Qt管道焊接参数条码打印系统(条码打印机TSC 244 Pro、打印条码、打印中文、打印字符、多张连续打印)
案例分享:Qt管道焊接参数条码打印系统(条码打印机TSC 244 Pro、打印条码、打印中文、打印字符、多张连续打印)
如何使用vlookup+excel数组公式 完成逆向查找?
如何使用vlookup+excel数组公式 完成逆向查找?
如何使用vlookup+excel数组公式 完成逆向查找?