FastReport如实现打印固定行数,不足补打空白行(转)

看了网上的一些资料,发现了方法,可是描述都不是很详细,也至于每次都没法实现,只能在数据集中作补空行处理。今天终于弄通了,贴出方法,以备后续之用。spa

1. <1>在报表上加一个Child(在控件设计器中名称叫“子(W)”).其Name取名叫BlankBand。.net

   <2>此Band就是咱们要添加的空行(若你的报代表细中有表格线,明细Band(如  DetailData中也有表格线,请在添加的BlankBand中也照样添加好表格线)。设计

          Band的高度设置为明细Band的高度。blog

  <3>.通过<2>的设置后,此Band的名称在报表中显示为: Child:BlankBand事件

 

2.在报表上加一个Footer 的Band(不是PageFooter)。(若你的报表不须要此Footer,能够将此BAND的高度弄成0).class

  添加此Band的理由:须要利用此Footer的OnBeforePrint事件计算补空行。循环

 

3.在Footer的Band的OnBeforePrint事件中写入动态添加空行的代码:方法

 

procedure Footer1OnBeforePrint(Sender: TfrxComponent);
begin
 while (engine.freespace-8.7 >=0.6) and (engine.freespace<29.70) do   //lybingyu我试验成功时没有添加 and (engine.freespace<29.70)  条件
   engine.showband(blankband);数据

end;di

 

 //说明:

// 1.  8.7高度为为报表中的PageFooter的高度,由于报表在打印Footer时,PageFooter还没打印,因此,在计算时得让工做引擎去掉预留的PageFooter的Band的高度.

//2.  0.6为空行Band的高度,即BlankBand的高度。

//3.  29.7为一张竖向A4张的默认高度。

    若不加此限制,有可能你的明细记录在一张纸上打不下时跳到第二页打,引擎由于只计算了PageFooter的高度,忽略了报表前面的Band高度会形成不停地插入空行以至报表的页数会被不停地添加致使死循环。

相关文章
相关标签/搜索