[阅读: 1087] 2009-06-24 19:51:34
我的报表是表格式的,请问如果数据没有填满一张表格的时候,如何用空表格填满剩余的空行,达到指定的列数?fr3用起来跟2好像不太一样,谢谢!
答:
FastReport 3.X
var
PageLine: integer; //在现在页列印到第几行
PageMaxRow: integer=15; //设定每页列数
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
PageLine := <line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then
Engine.newpage;
end;
//Footer1高度设为0
procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
i: integer;
begin
i := iif(PageLine=0, PageMaxRow, PageLine);
while i < PageMaxRow do begin
i := i + 1;
Engine.ShowBand(Child1); //印空白表格
end;
end;
begin
end.
FastReport 2.X
在资料字典设定变数
PageMaxRow 设定每页列数。
PageLine 在现在页列印到第几行。
每 PageMaxRow 笔新自动跳页(在Band的OnBeforePrint)
PageLine := [line#] mod PageMaxRow;
if (PageLine = 1) and ([line#] > 1) then
newpage;
一页列印15笔,不足笔数的列印空白表格列的方法
Master1
detail1----固定印PageMaxRow笔,有表格
detailFooter1---在OnBeforePrint输入下列程式码,高度设为 0
child1---空白表格
**detailFooter1.OnBeforePrint
i := PageLine;
if i = 0 then
i := PageMaxRow;
while i < PageMaxRow do begin
i:=i+1;
ShowBand(Child1);
end;
FR 2.X中的例子(Demo中的42.frf),方法有点不同,具体是这样的:
(1)添加一个主项脚,将其Visible设为False;
(2)添加一个子项,做好要填充的空白行;
(3)在子项脚的(OnBeforePrint)事件中加入类似代码:
begin
while FreeSpace > 25 do
ShowBand(Child1)
end