如何用qreport控制表格的边框及如何向表中最后一页追加空白纪录(100分)

  • 主题发起人 主题发起人 xuedu
  • 开始时间 开始时间
X

xuedu

Unregistered / Unconfirmed
GUEST, unregistred user!
只能用qr
边框的底部要求是粗线,和表中的不同
我用quickrep的onendpage来传递记录值,但好像不行
 
最一页追加空白记录
只能算每一页打多少行,最后一页差多少行不够一页就追加多少条空白记录
 
有关追加纪录的能不能详细一点,最好有代码
是不是可以用sql建个临时表然后向里面添加
我的信箱:xuedu06@263.net
非常感谢你的回答
 
我以前做过这样的,用户要求每页打印9条记录,不足9条显示空行,我就是先建个临时表,
再根据记录的数量补足9的倍数条记录(用insert into 插入空行)完成的,代码没有留下
来,没有用quickreport的Dataset,用quickreport的OnNeedData事件和一个动态创建的
Query一条一条画的.有什么问题hxf_mail@email.com.cn
 
to jzx
能再具体一点吗,不好意思。我是个初学者。
 
多谢各位,不过就目前来说,我的问题还没有解决,也许,他的却很简单,不过,对我而言,是有点难度的
我想了很久,没有满意的答案,因为我不想用其它的控件,以前有类似的问题,使用fast可以解决,我想知道在qr中能否解决的好
一点,看了以前的,发现凡是用qr的,都没能很好的解决这个问题。
 
.....
count MaxRow =9;//最大行数
.....
var
N,I : integer;
begin
.....
N:=query1.recordcount mod maxrow//得到需要插入的行数
for i:=1 to ndo
begin
query1.sql.add('insert into table values(null,null,null,null)');//插入记录
end;
.....
end;
.....
//这样临时表的记录数就可以被N整除了你再打印就可以在最后一页显示空白记录了。
//代码没有调试
//还有问题吗?
 
jzx,
谢谢,不过问题只解决了一半,给一半分吧
 
纠正一下,你用刚才我帖的代码,应该可以了,不用再控制OnNeedData显示报表了.
 
关于这个问题, QR不是特别好控制
我以前是这样做的: 在画报表时将表格线画满整个报表,然后在打印时
控制是否打印它。
 
xuedu
你控制表格边框作什么?高度?粗细?
 
第一个问题
//需要放入一个方框(表格边框)让它充满整个detailband1如果不行可多试几次
//qrshape1..qrshape7 是竖线
procedure TPrnForm.Line_ReSize;
var
recordcount : integer;
begin
query1.sql.Clear;
query1.close();
query1.sql.add('select * from d__temp_rpt');//临时表
query1.open;
TopLine.left :=detailband1.left;//得到左边局
TopLine.top :=detailband1.Top - detailband1.height;
TopLine.Width :=Detailband1.Width;
qrshape1.Top := TopLine.top;//统一高度
qrshape2.Top := TopLine.top;
qrshape3.Top := TopLine.top;
qrshape4.Top := TopLine.top;
qrshape5.Top := TopLine.top;
qrshape6.Top := TopLine.top;
qrshape7.Top := TopLine.top;
leftline.Top :=TopLine.top;
rightline.top :=TopLine.top;
leftline.Left :=detailband1.left;
rightline.Left :=detailband1.Left + detailband1.width;
recordcount :=10;//最大显示10行(包含标题)
if recordcount =0 then
recordcount :=2;
//设置竖线高度
qrshape1.Height := detailband1.Height * recordcount;
qrshape2.Height := detailband1.Height * recordcount;
qrshape3.Height := detailband1.Height * recordcount;
qrshape4.Height := detailband1.Height * recordcount;
qrshape5.Height := detailband1.Height * recordcount;
qrshape6.Height := detailband1.Height * recordcount;
qrshape7.Height := detailband1.Height * recordcount;
end;

procedure TPrnForm.QuickRep1AfterPreview(Sender: TObject);
begin
query1.close;
query1.UnPrepare;
end;

procedure TPrnForm.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := (CurrentIndex < Query1.RecordCount);
if MoreData then
begin
QRLb1.Caption := Query1.Fields[0].AsString;
QRLb2.Caption := Query1.Fields[1].AsString;
QRLb3.Caption := Query1.Fields[2].AsString;
QRLb4.Caption := Query1.Fields[3].AsString;
QRLb5.Caption := Query1.Fields[4].AsString;
QRLb6.Caption := Query1.Fields[5].AsString;
QRLb7.Caption := Query1.Fields[6].AsString;
QRLb8.Caption := Query1.Fields[7].AsString;
Query1.Next;
QuickRep1.QRPrinter.Progress := (Longint(CurrentIndex) * 100) div Query1.RecordCount;
end
else
QuickRep1.QRPrinter.Progress := 100;
Inc(CurrentIndex);
if (QuickRep1.RecordNumber +1) mod 10 = 0 then
begin
QuickRep1.NewPage;
Exit;
end;
end;

procedure TPrnForm.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
CurrentIndex := 0;
end;

end.
 
sundart,
能说的具体一点嘛,我想知道的就是如何在打印时控制,表格的细线,我用的是shape粗线,我想用detailband
的drawbottom来控制,而且每页的首纪录shape设为假
 
jzx, 首先,非常感谢你的帮助,不过,如果用你的代码,表的每页记录数就给限死了
我希望是动态的,记录数可变的,大家继续讨论吧。
 
多人接受答案了。
 
后退
顶部