zoukankan      html  css  js  c++  java
  • FastReport如实现打印固定行数,不足补打空白行(转)

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

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

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

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

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

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

      添加此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;

     //说明:

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

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

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

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


    ---------------------
    作者:chinmusam
    来源:CSDN
    原文:https://blog.csdn.net/chinmusam/article/details/6663524
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    【解决办法】移动硬盘在电脑上显示“本地磁盘”并且出现打不开的情况
    在Windows上搭建Python环境
    Thymeleaf模板的使用
    thymeleaf中的th:remove用法
    AngularJS PhoneCat代码分析
    AngularJS PhoneCat代码分析
    利用java反射调用类的的私有方法--转
    Java Reflection (JAVA反射) --转载
    Eclipse 常用快捷键 (动画讲解)--转载
    三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS
  • 原文地址:https://www.cnblogs.com/sdlz/p/10742788.html
Copyright © 2011-2022 走看看