急!用QuickRep,此报表怎么打印??

zhaofr1981 2003-10-27 03:53:26
用QuickRep。报表根据不同数据分页,并且每页有表格线。每页要求显示15条记录,不足15条,则只显示表格的空行,如下:
数据一:
行1
行2
此处空13行

数据二:
行1
行2
....
行15
数据三:
......
...全文
31 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gerrley 2003-10-28
  • 打赏
  • 举报
回复
ADOQuery跟Query的用法是一样的。只是那数据集控件换了一下而已。procedure TrptNewProductinfo.qrlblCreate(Acaption:string;Aqrlbl:TQRLabel;Aleft,Atop:integer); 打印在报表上的位置是由你自己指定的,(Aleft,Atop:integer)当然可以想它打印在什么位置都可以。
pdbird 2003-10-27
  • 打赏
  • 举报
回复
你的完全可以做到,将adoquery的数据加进来就可以了
zhaofr1981 2003-10-27
  • 打赏
  • 举报
回复
感谢gerrley的例子,但是能否用QRSubDetail来显示ADO中记录,动态生成报表的格式?
gerrley 2003-10-27
  • 打赏
  • 举报
回复
如果报表的格式固定的话,可以把先把报表的格式做出来。打印的时候根据数据表中的数据多少动态生成QRLabel。给你例子:

数据一:
行1:
..
..
行15.
procedure TrptNewProductinfo.qrlblCreate(Acaption:string;Aqrlbl:TQRLabel;Aleft,Atop:integer); //打印时动态生成QRLabel
begin
Aqrlbl:=TQRLabel(DetailBand1.AddPrintable(TQRLabel));
Aqrlbl.Caption :=Acaption;
Aqrlbl.Parent:=DetailBand1;
Aqrlbl.Left:=Aleft;
Aqrlbl.Top:=Atop;
end;

procedure Trptyfhclymxb.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
var
row:integer;//动态打印行数
iTop:integer;//第一行数据的位置
strdate,strclmc,strnum,strunit,:string;
qrlbl:TQRLabel;
begin
row:=0;
if query1.Active=false then query1.Active:=true;
with query1 do
begin
First;
while not Eof do
begin
strdate:=FieldByName('Out_date').AsString;
strclmc:=FieldByName('clmc').AsString;
strnum:=FieldByName('number').AsString;
strunit:=FieldByName('unit').AsString;

iTop:=37+row*28; //此处设定了每行的宽度为28
qrlblCreate(strdate,qrlbl,11,iTop);
qrlblCreate(strclmc,qrlbl,71,iTop);
qrlblCreate(strnum,qrlbl,234,iTop);
qrlblCreate(strunit,qrlbl,282,iTop);
next;
row:=row+1;
end;
end;

end;
WWWWA 2003-10-27
  • 打赏
  • 举报
回复
问题简单化一点,是否是不足一页用空行填满?

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧