可不可以救救我,我要崩溃了(100分)

  • 主题发起人 主题发起人 missqiao
  • 开始时间 开始时间
M

missqiao

Unregistered / Unconfirmed
GUEST, unregistred user!
有那么一个问题老是解决不了,我用QUICKREPORT做一个报表,
字段很少,分两列打印,预览是这样的:
NO …… NO ……
1 24
2 25
…… ……
23 46
因为最后一行老是打印不出来,我就把DETAILBAND的高度调小一点,但是
会出现这样的预览:
NO …… NO ……
1 29
2 30
…… ……
25 46
26
27
28
请问各位大大侠,怎么样做才能使两列平衡??小弟不胜感激!!
 
调整bottom margin吧
 
调整DETAILBAND的高度肯定会引起这样的结果,先打完左边的列才打印的右边的列,
建议先确定出总记录数,然后再指定DETAILBAND的高度,
也可换一种打印方式,
使用QuickReport 的 OnNeedData 事件
 
先用CANVAS画出来,然后再打印那个画,一定没错。
 
如果你的no是从表中取得的,而且连续,那么:
打印成一列;
打印query的sql为:
select a.*, b.* from table a left join table b on b.no -1 = a.no
where a.no = 奇数
(不好意思,机器上没装sql,在sql中如何判断奇偶又给忘了!:<)
 
最后一行的问题,一般可以通过调整打印纸的打印边界来解决
我做过图形的铺满打印,也是在onNeedData里控制,根据需要
算出每个记录所需的空间,可以完全控制打印效果。预览有时
是有些误差的,以打出来的为准,边界留多一点,太紧以后放
纸的时候就比较麻烦。band高一点,数据放靠上面,打到最后
也不会丢。
 
我试过调整bottom margin,但是好象不行。
to zhilon &amp;
stlont:怎么样使用QuickReport 的 OnNeedData 事件?可以说得详细点吗?
如果有什么好方法:请发E=MAIL给我:yangbifang8888@sohu.com,先谢谢你们了。
to dlnew:我的机子也没装SQL。
to 白河愁:CANVAS?不懂。
 
你用的数据库是什么?
 
运行时调bottom margin当然没用。
如果想在运行时计算决定, 那么给DetailBand加一个空的ChildBand, 把它设成enabled := false;
打印时在打左列你希望的最后一行时(比如打到正中一条记录时,在DetailBand.BeforePrint里判断)设置ChildBand.Enabled:=True并设置它的高度为一个合适的值即可达到你的要求了。
 
在delphi的qr demo里,有一块专说 OnNeedData的
打开它,编译运行,看看代码,并不复杂。
 
不好意思,小弟初学delphi,我知道问题有点可笑,有哪位大哥告诉我怎么样
打开delphi里的demo,编辑运行?
 
多人接受答案了
 
后退
顶部