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
版权声明:本文为博主原创文章,转载请附上博文链接!
- 用户登录安全框架shiro—用户的认证和授权(一)
- 第一道防线__SpringMVC配置拦截器
- Web层框架对网站中所有异常的统一处理
- Spring MVC__自定义日期类型转换器
- 解决在控制层springmvc框架发出的400状态的错误
- 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)
- MySQL日志文件之错误日志和慢查询日志详解
- 采用HTML5之"data-"机制自由提供数据
- Spring和SpringMVC父子的容器之道---[上篇]
- 快速完成(图片旋转,查看原图)
- Jsp中格式化时间戳的常用标签
- 反射+自定义注解---实现Excel数据列属性和JavaBean属性的自动映射
- 后台模板管理系统___左侧菜单数据的异步加载
- Shiro眼皮下玩ajax,玩出302 Found
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 应用签名的两种方法
- Android 关闭多个Activity的实现方法
- 我从Vue源码中学到的一些JS编程技巧
- 组复制升级 | 全方位认识 MySQL 8.0 Group Replication
- 浅谈关于Android WebView上传文件的解决方案
- Android对图片Drawable实现变色示例代码
- 排序|优先队列不知道,先看看堆排序吧
- Android关于FTP文件上传和下载功能详解
- Android中封装RecyclerView实现添加头部和底部示例代码
- Python 十六进制hex-bytes-str之间的转换和Bcc码的生成
- android中实现手机号码的校验的示例代码
- Android ListView实现下拉加载功能
- Android 截图功能源码的分析
- Docker下搭建禅道管理系统
- Android如何通过Retrofit提交Json格式数据