分享

FastReport分组页码

 独孤求财 2012-03-21

FastReport分组页码

时间:2011-5-24来源:yang 作者: peng点击: 82次

 

这里的情况适用于FastReport2.53版本。
报表页码一般情况下就象在Word里一样不用费什么脑筋,FastReport里直接从系统变量可以得到。但特殊情况下就无法轻松得到了。
这里谈的是分组页码的问题,就是在报表分组的情况下。首先是每个分组强制分页,然后页码重新计数。比如5页分为二组,一组占了2页,另一组占3页。平常显示只要
1/5  2/5  3/5  4/5  5/5
这时要变成
1/2  2/2  1/3  2/3  3/3

第几页这是很容易算出来的,用个变量来表示页码,分组结束后重新算页码就行了,难点就在分组的页数,基本思路就是利用两遍报表,第一次得到各个分组的总页数,第二次再显示之。

首先定义三个变量,GPage用来表示页码初始值为1,PageList用来存放分组的页码数初始值为{0},GIndex用来计算分组的索引初始值为0,FGIndex用来第二次遍历时计算分组索引,其实这个与GIndex可以共用一个,但为了清晰起见分开用。

在PageFooter的BeforePrint里写
       GPage := GPage + 1;
在GroupFooter的BeforePrint里写
     if FinalPass then  //二次遍历时增加分组索引
          FGIndex := FGIndex + 1
     else
     begin
          setLength(PageList,GIndex + 1);
          PageList[GIndex] := Gpage; //存放分组的总页数
          GIndex := GIndex + 1;
     end;
     GPage := 0;

这样所有的东西都有了,在显示页码的Memo里填[GPage]。
在显示页数的Memo下面脚本段里写
     if not FinalPass then exit;
     MemoPageCount.Lines[0] := PageList[FGIndex];
(MemoPageCount 是这个Memo的名字)

这样就达到上述的分组页码的要求了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多