如何打印表头?(50分)

  • 主题发起人 主题发起人 hugecheng
  • 开始时间 开始时间
H

hugecheng

Unregistered / Unconfirmed
GUEST, unregistred user!
我要制作一个每页都固定的表,每页都有表头,表尾,且每页的行数固定,不
管数据的记录数为多少,(如果一页的记录数只有1个,他都要打印出10行);
 
谁能帮帮我?
 
哪位大哥帮我一把,急用
 
这好办。设置一个全局变量Cur_Line,用来标记当前打印的是当页的第几行。
然后设置QuickReport的DataSet为空,在OnNeedData里面给Detail里面的字段赋值。
没赋值一次,给Cur_Line+1,然后判断是否打够当前行,是否到达DataSet的结尾等。
如果到了DataSet的末尾且打印满一页。则结束打印。
如果已经打印够了行数,则换页(NewPage),
如果到了DataSet的末尾但是没有打印满一页。则打印空行。
如果没有打印够行数,则继续打印
……
即使简单的逻辑判断。注意这样做的时候,需要在BeforePrint里面,设置DataSet.First,就是
Query1.First或者Table1.First等。
 
如果你用的是QuickReport,那么你可以查看一下
Delphi自带的Demo,在Delphi5/Demos下。
如果是其它报表系统,比如FastReport等,你可以在DFW上搜索一下很多的。
 
用fastreport吧,只要设置master data行的属性为print on empty
设置page header行就实现了,太简单了
 
急死我了,看不到各位的留言.这是怎么回事?
 
我做的这个报表是10个记录为一页,并且每页都需要合计金额.换页之后表头页必须有.
(我用的是quickreport)
 
表头必须有,这不难吧,放置在ColumnHeader里面就可以了。
至于如何打印空行,我上面已经说了。[:)]
 
fastreport哪儿有?
 
to yzhshi:
你好!把表头放在columnheader,不会有什么问题吧?
 
当然没问题了。虽然他叫ColumnHeader,但是实际上没有和DetailBand里面的元素建立对应关系。
所以你想每页都打印的元素,均可以放置在这里面。
 
to yzhshi:
我把我的问题详细的说一下吧!仓库开出凭证单据,每一张凭证上只能开出十条记录,
当记录数多出十条时,凭证号码自动加一,那么就要打出一张新的凭证,每一张凭证都是单独
做合计的.该如何处理呢?谢谢!(比方说我开了16条记录的凭证,那么就要连续打印出两张
凭证单,一张有10条,一张有6条外加4个空记录,合计是分开做的)
 
没问题呀。
你除了需要设置一个当前打印行数的全局变量外,还要设置一个当前打印页数的变量
(当然在NewPage事件里面做也可以不设置)
其他的就是全部在OnNeedData里面编程了。
逻辑:
1、BeforePrint里面设置DataSet.First;
2、在OnNeedData事件里面
a.判断是否满足行数且达到DataSet.Eof,如果成立,计算最后页的合计,退出
b.判断是否达到记录结尾(此时没有满足行数),如果是,则打印空行。如果不是
则显示具体数据
c.判断是否打印满一页的行数,如果是,则计算页合计,开始新页。
 
谢谢!分先给你吧!我去试一试.
 
慢慢尝试,一定能够成功![:D]
 
to yzhshi
合计在报表中显示呢?
 
后退
顶部