栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

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

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

        前一阵,笔者一直使用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  我也不知道。。。。反正我是从其他地方复制粘贴过来的。

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

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

报表必须开启“双通道”

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

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

大功告成。

对了附上本次版本

 

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

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

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号