如何打印空格(200分)

  • 主题发起人 主题发起人 浪里白条
  • 开始时间 开始时间

浪里白条

Unregistered / Unconfirmed
GUEST, unregistred user!
我在打印时,分的是两栏打印的,用来统计学校各个部门的教师记录
有的部门课时很多,有的部门课时很少的,由于是两栏,当记录很少时,页尾边条总是
跟不上去,我想画空格,来补充空白页,不知怎样实现
 
在打印之前你判断一下课时的多少吗,不够时,你用空格补吗。
 
就是怎样补呀,判断谁不会呢?
 
" " chr(32)
不行吗?呵呵~
 
使用cacheupdate,
追加记录数据,然后cancelupdate
应陔没问题。
 
to aerobull:
请问具体的怎样用呀,如解决两百大洋全给你
 
分的是两栏打印的???
不太明白,能解释一下吗??
 
有一个方法:
1、不要设置 QuickRep 的 DataSet 属性。
2、然后将 QRDBText 换成 QRLabel,
3、处理 QuickRep 的 NeedData 事件,手工将数据集中的记录指针向后移动,如
procedure TQuickReport1.QuickRepNeedData(Sender: TObject;
var MoreData: Boolean);
begin
if not table1.eof then
//未遍历完数据集
begin
if not table1.bof then
//第一条记录时不必调用 next
table1.next;
MoreData := True;
//还要打印Detailband
end
else
if 页面有空白(此时数据集中数据已打完) then
MoreData := True //还要打印 Detailband
else
MoreData := False;
//结束
end
4、再在各 QrLabel 的 OnPrint 事件中设置它显示的值,如
procedure TQuickReport1.QRLabel1Print(Sender: TObject;
var Value: string);
begin
if Not Table1.Eof then
Value := Table1.FieldByName('First').AsString //手工设置打印出的字符串
else
Value := ' ';
//此时是在补足页面的空白部分
end;

注意在 QuickRep Preview 或 Print 之前将数据集激活并调用 First。
这种办法也可用于与数据集无关的数据打印。
 
to bbkxjy
今天没试成功,太忙了,你的方法相当的好
谢谢了!
如成功了两百分都给你
 
to aerobull
cancelupdate是怎么用的
 
to 浪里白条:
你好,报了什么错吗?我以前试过这样将同一字段的数据打在不同的列上,将空的detail
band 打出来前天我也试了可以的。另我的 QuickReport 好象是 3.08 版本的,不过所用
到的几个事件应该是兼容的。
 
谢谢bbxjy:
我的问题得以解决,不知你怎样判断页面仍空白,可数据已打完的
我是数了一下一页可打多少行,再来比较数据中的记录数判断的好象比较忙烦
不知可有更好的方法。
 
好象是没有什么太好的办法,我是在 QuickRep 的 StartPrint 事件中计算一页能打多少
行的:
var
pagerows: Integer;
procedure TQrepChk.QuickRepBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
units := pixels;
page.units:=pixels;
pagerows:=trunc((page.length-page.topmargin-page.bottommargin-
pageheaderband1.Height - columnheaderband1.Height -
pageheaderband1.Height) / detailband1.Height);
end;
就是页的高度减去那些非 Detail 类型的 Band 的高度,再除以 DetailBand 的高度。这样要
求这些属性的计量单位要一致,如 QuickRep 的 Page.Units 设为 Pixels。
然后设一个行计数器,在 QuickRep 的 StartPage 事件中将它置零,在 DetailBand 的
AfterPrint 事件中将它增1。
这样子其实也很麻烦,要是报表布局变化了,计算行数的式子又得修改。我想 QuickRep 好象
有个 CurrexY 属性,能不能根据它判断已打印到了一页得末尾呢?还要保证页面大小变化
时仍可以正确地判断...
 
后退
顶部