FastReport.Net 无限页高/自动页高(连续纸小票) 图文 实用版

您所在的位置:网站首页 页面高度怎么搞出来 FastReport.Net 无限页高/自动页高(连续纸小票) 图文 实用版

FastReport.Net 无限页高/自动页高(连续纸小票) 图文 实用版

2024-07-10 23:58| 来源: 网络整理| 查看: 265

        前一阵,笔者一直使用FastReport.Net开发报表,遇到一个连续纸的问题,没想到FastReport.Net竟然没有默认设置的无限页高,或者自动页高的功能。网上搜了一些,找出了类似于    FastReport.Net 无限页高(连续纸小票) - 青侠oO - 博客园   这样的技术博客。百度搜了一下也基本都是同样的内容。

但是内容都是全代码,没有什么鸟用啊,好多内容都需要自己配置研究。后来经过笔者的一番研究,终于找到了解决方案,大概也是跟上述文档的一致,只是一些细节没有贴出来。现在我结合我的创作历程,将上述代码进行改造后以图文的形式展示给大家,在这里感谢之前整理的前辈,我也是在前辈的基础上实现的功能。

好了正文开始:

需求:就是要实现连续纸的效果。

先看最后效果:

说明:上面图片中的(S)RK214100001 是绑定的数据行自动变化的,右下角的Q1  以及4LCN  和最下方的条码是固定的内容。

设计界面如下:

 由于数据内容是动态的,因此需要绑定数据区。

点击左下方的代码按钮,切换到代码页签。

代码如下

using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using System.Drawing; using System.Data; using FastReport; using FastReport.Data; using FastReport.Dialog; using FastReport.Barcode; using FastReport.Table; using FastReport.Utils; namespace FastReport { public class ReportScript { //定义数据区高度变量 private float data1Height; //定义栏尾高度变量 private float ColumnFooter1Height; Page1的StartPage事件 private void Page1_StartPage(object sender, EventArgs e) { if(Engine.FinalPass) { //页面高度的计算 Page1.PaperHeight = (data1Height+ColumnFooter1Height)/Units.Millimeters+ Page1.TopMargin +Page1.BottomMargin; } } //数据区Data1的高度 private void Data1_AfterLayout(object sender, EventArgs e) { data1Height+=Data1.Height; } //栏尾ColumnFooter1的高度 private void ColumnFooter1_AfterLayout(object sender, EventArgs e) { ColumnFooter1Height+=ColumnFooter1.Height; } } }

 

在上方代码中,有三个事件。

设置方式是:

1、点击数据区

2、点击属性页中的事件按钮

3、选择事件AfterLayout 对应的代码:Data1_AfterLayout

 4、其他的两个事件也是如此,可以在属性页中选择对象

 添加三个对象的事件:

1、Page1_StartPage

2、Data1_AfterLayout

3、ColumnFooter1_AfterLayout

有的小白可能会问,这个Data1是怎么来的呢?如果你增加了其他对象,可以从属性页中找到

最后就是页面的计算

Page1.PaperHeight = (data1Height+ColumnFooter1Height)/Units.Millimeters+ Page1.TopMargin +Page1.BottomMargin;  

为啥加 /Units.Millimeters  我也不知道。。。。反正我是从其他地方复制粘贴过来的。

这个时候打印预览总是达不到效果,查了其他资料原来缺少了一箱配置

非常重要        非常重要        非常重要

报表必须开启“双通道”

开启方式:报表菜单->选项-> 一般->勾选双通道

 至此,就能实现自动页高,连续纸小票功能。

大功告成。

对了附上本次版本

 

如有问题,欢迎指正,我再完善。

另外,新增加事件的方式,就是在事件上右侧空白那双击即可,如下图红框部分。

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3