中国开发网: 论坛: Delphi/BCB: 贴子 730541
pcplayer: 用空表格填满剩余空行的 FastReport
我的报表是表格式的,请问如果数据没有填满一张表格的时候,如何用空表格填满剩余的空行,达到指定的列数?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

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录