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

冬冬冬冬冬冬冬冬冬冬 2013-05-29 04:47:56
注意我的是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;
}
}
}
...全文
410 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuqzu 2013-08-18
  • 打赏
  • 举报
回复
收藏,顺便接分
  • 打赏
  • 举报
回复
我的问题已经解决了,现在贴出代码,再来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;              
    }      
  }
}
  • 打赏
  • 举报
回复
以上的问题已经解决了这是解决方案的链接 http://www.evget.com/zh-cn/evquestions/viewinfo.aspx?qid=1775 现在因为数据源中的包含有多个订单信息和每个订单信息下的物品信息,所以使用了分组专家,这样的话原本已经解决的自定义纸张高度的解决方案不适用了。求改进后的解决方案

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧