fastReport .net 控件的自定义纸张高度

.Net技术 码拜 6年前 (2015-05-10) 1383次浏览 0个评论
 

注意我的是winform程序,是C#。绑定了一个数据源是dataset,数据传输,小票样式也已经设置好了。但是由于dataset每次包含的数据量不同,所以一张标准的80*210的纸有时候只占三分之一,有时候会打多张,而且每一张的下面都会有空白,最后一张可能只占了一行。
这就很纠结了。怎么样才能自定义纸张的高度,恰好把内容打印到小票上呢。
ps:自己研究了半天总算是有了点眉目,但是Data1的高度貌似乘以2了。以下是我在frx文件中编辑的代码。请各位大神指正。求合理的解决方案

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 void Page1_StartPage(object sender, EventArgs e)
    {
      Page1.PaperHeight=ReportTitle1.Height+ Data1.Height+GroupFooter1.Height;
    }
  }
}
以上的问题已经解决了这是解决方案的链接
http://www.evget.com/zh-cn/evquestions/viewinfo.aspx?qid=1775

现在因为数据源中的包含有多个订单信息和每个订单信息下的物品信息,所以使用了分组专家,这样的话原本已经解决的自定义纸张高度的解决方案不适用了。求改进后的解决方案

我的问题已经解决了,现在贴出代码,再来4个人,就散分了。以下代码是在fastreport的代码页中写的,而且报表必须打开双通道

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 reportTitle1Height;
    private float pageHeader1Height;
    private float groupHeader1Height;
    private float data1Height;  
    private float data2Height; 
    private float groupFood1Height;
    private float pageFooter1Height;
    
    private void Page1_StartPage(object sender, EventArgs e)
    {
      if(Engine.FinalPass)
      {     
        if(Report.GetParameterValue("TitleName").ToString().Contains("并单"))
        {
          Text12.Visible=true;
          Text13.Visible=true;
        }
        Page1.PaperHeight = (reportTitle1Height + pageHeader1Height+groupHeader1Height+data1Height+data2Height+groupFood1Height+pageFooter1Height)/Units.Millimeters+ Page1.TopMargin +Page1.BottomMargin;  
      }
    }
    //报表标题的高度
    private void ReportTitle1_AfterLayout(object sender, EventArgs e)
    {
      reportTitle1Height=ReportTitle1.Height;
    }
    //页眉区的高度
    private void PageHeader1_AfterLayout(object sender, EventArgs e)
    {
      pageHeader1Height=PageHeader1.Height;
    }
    //GroupHeader1的高度
    private void GroupHeader1_AfterLayout(object sender, EventArgs e)
    {
      groupHeader1Height+=GroupHeader1.Height;
    }
    //Data1的高度
    private void Data1_AfterLayout(object sender, EventArgs e)
    {
      data1Height+=Data1.Height;  
    }     
    //Data2的高度
    private void Data2_AfterLayout(object sender, EventArgs e)
    {
      data2Height+=Data2.Height;
     
    }
    //GroupFooter1的高度
    private void GroupFooter1_AfterLayout(object sender, EventArgs e)
    {
      groupFood1Height+=GroupFooter1.Height;
    }
    //页脚区高度
    private void PageFooter1_AfterLayout(object sender, EventArgs e)
    { 
      pageFooter1Height=PageFooter1.Height;              
    }      
  }
}
40分
收藏,顺便接分
这个可能是设置的问题吧,你可以参考一下finereport的打印设置,总的来说finereport的打印这一块还是做的不错的,不管是产品,还是文档。
页面设置:页面设置中所设的横纵向、纸张大小、页边距等是报表在客户端浏览器中预览的效果,与打印效果无关,页面设置属性可参考页面设置文档;
打印首选项:打印机首选项中所设的横纵向、纸张大小决定了最终打印效果。
FineReport中只有Applet打印与PDF打印支持将页面设置传入到打印首选项中,即在打印时打印机会按照页面设置进行打印,而Flash打印不支持将页面设置传递给打印机首选项,必须手动设置纸张大小及方向。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明fastReport .net 控件的自定义纸张高度
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!