通用单据打印控件问题集

通用单据打印控件问题集
1.        介绍一下格式设计器的大体情况
格式设计器的界面分为以下几部分: 菜单与工具条页面设计器代码编辑器对象查看器报表结构树数据树工具箱等。
l         报表结构树:树形展示报表的层次结构,最顶级是Report对象,Report对象的下级是Page对象,可以有多个Page。Page对象上可以容纳各种Band对象,Band上可以放置各种基本对象,基本对象可以定义取数表达式。
l         页面设计器:页面设计器对应报表结构树中的Page对象,是设计的主要区域。
l         代码编辑器:代码编辑器中可以对各种对象的事件编写代码,这样就能对报表的生产做灵活控制。
l         对象查看器:可以查看并修改报表结构树中的每一个对象的属性以及事件。
l         数据树:数据树包括数据、函数、变量,有关其使用方法参考以下具体章节。
l         工具箱:从工具箱里面选取各种对象,从而在页面设计器上设计。
2.        格式设计器的基本原理是怎样的
结构化布局、主-从式数据模型是通用单据打印控件的基本特点。报表渲染引擎首先从布局的对象中找到链接到主数据上的对象,然后根据主数据中的记录条数逐条渲染这些对象,每渲染一条主数据后要接着渲染与其关联的从数据。这个过程是递归的。
3.        介绍一下工具箱中的各种对象
l         总体上分为三类:各种Band,各种基本对象,辅助工具(如格式刷)。
                        i.              Text对象:即文本框对象,可以输入文本或者取数公式
                      ii.              Picture对象:图像
                    iii.              Line:线条
                     iv.              Chart:图表
                       v.              RechText:富文本对象,rtf格式
                     vi.              BarCode:条码对象
                   vii.              Draw对象:各种几何图形
                 viii.              SubReport对象:比较特殊的一类对象,子报表对象。表示嵌入一个页对象。
l         报表标题(ReportTitle):报表的标题,整个报表只能有一个标题,只显示在第一页。并且显示在页眉对象之前。
l         页眉、页脚(PageHeader、PageFooter):固定显示在每页的上部与下部。可以设置“首页显示”、“末页显示”等选项。页眉位置由上边距确定。页脚的位置由下边距减去页脚高度来确定。
l         主数据、明细数据……第六级数据:连续的六级数据都可以相应的连结到具备主-从约束的后台关系记录集上。他们必须连续使用在同一页上,例如不能在一页上使用了主数据、次明细数据,而没有使用明细数据。我们称这六种Band为DataBand.
l         表头(Header)、表尾(Footer):每一种DataBand的前、后都可以放置表头、表尾。再表尾上放置文本对象,在文本对象内就可以定义包含聚合函数的取数公式。
l         重叠对象(Overlay):一类特殊的区域,放置在其上的对象采取绝对定位的方式,重叠对象代表了整个纸张去掉页边距所余的区域。所以我们可以用重叠对象设计一些单据的固定表格。
l         分组头、分组尾:分组头可以定义分组的依据,分组尾可以实现组内合计。
l         栏目头、栏目尾:报表可以在一张纸上进行分栏,实现多栏式报表。
4.        为什么我的数据(库)中有多条记录,但打印(预览)的时候,却仅仅显示了一条数据?
请检查你对象是否放到DataBand上了,从报表结构树可以查看层次结构。还要检查该DataBand是否链接到一个数据模型上了(可以从蓝色标题栏上检查,或者从对象查看器中检查DataSet属性是否正确设置)。
5.        如何实现某一字段合计?
可以在表尾上放置系统变量对象(西格玛符号对应的对象),然后双击使用其向导来设置即可。选择聚合数,函数使用sum,然后选择Band,再选择字段。如果需要把合计放到表头上,需要用脚本来辅助实现,可以参考后面相关介绍。
6.        如何设计两级主 - 从式报表(一个表头、多条分录)?
l         第一种方式:分别放置主数据Band和明细数据Band,并链接到相应的数据模型上。然后把需要显示的字段从主数据模型拖到主数据Band上、把分录上的数据从数据模型拖到明细数据Band上。也可以把文本对象放到DataBand上后,再选取字段。
l         第二种方式:设置页对象(Page)的属性DataSet为主数据模型,在页上放置页眉和页脚。然后添加主数据Band(MasterDataBand),把主数据字段放到页眉和页脚,把分录数据放到主数据band上。这种方式反映了一个事实:可以链接到记录集上的对象有七个层次。
7.        我定义的公式报错,如何解决?
l         检查你的表达是否存在括号是否不配对的现象,尤其要检查是否存在嵌套的中括号。
l         检查是否选择数据模型中不存在的字段
l         检查是否使用了不存在的函数
l         检查字符串常量的书写,注意要用单引号,不要写成双引号
8.        中文大写数字如何实现?
l         格式化函数中以下几个函数可以提供此功能:FiscalCurrencyCN,FiscalNumberCN,FormatToChMoney,FormatToChUpper
9.        把打印预览中的内容导出 Excel ,不美观,如何解决?
l         分录数据设计时要对齐一行,并且高度一致,边框左右一次连接
l         表格线使用边框来组合,不要使用Line对象来画格子。
l         导出时建议不要导出背景等。
10.    待续 ….

一、应用场景与出发点 同一个系统中,为了解决不同的客户可能需要设计不同的单据打印模板,实现此方法可能是: 1、设计不同的自带RDLC报表文件,根据当前客户加载不同的报表打印 2、GDI+绘图 和 打印组件 ,不同的客户创建不同的绘图XML格式的模板内容 3、其他第三方组件 主要对比一下前两种方法,第一种方法不好之处在于,不灵活,开发者必须地每个客户制订一个报表,不推荐采用。第二种方法,修改对应的模板内容就可以了, 模板内容可以是Xml文件,也可以是存放在数据库中的Xml格式字符串。推荐采用这种方法。然后这种方法的也有一个棘手问题 :如何让用户快速、方便地设计打印模板,本示例就是为了解决这个问题。 二、实现思路与原理 功能概要:设计一个界面,支持用户自由添加 要打印的项,文本,直线,图片 等,并且可以方便改变打印项的 字体、颜色、粗细、位置,设计时支持效果预览。 技术要点:GDI+绘图、拖动控件、XML解析、自定义控件 三、相关类介绍 绘图工具类:DrawHelper 实现 xml格式模板 与 打印项 之间进行互相转换,在目标画板中绘制 拖动工具类:WinHelper 实现控件的鼠标拖动,键盘移动 自定义控件:用于显示文字的文本框 TextBoxExt、用于显示直线的标签 LabelExt 主窗体代码:用于用户操作,添加,删除,编辑,打印项 详细介绍请参照我的博文:http://de.cel.blog.163.com/blog/static/51451236201472215450939/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值