zoukankan      html  css  js  c++  java
  • FastReport分组页码

    这里的情况适用于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用来表示页码初始值为1PageList用来存放分组的页码数初始值为{0}GIndex用来计算分组的索引初始值为0FGIndex用来第二次遍历时计算分组索引,其实这个与GIndex可以共用一个,但为了清晰起见分开用。

     

    PageFooterBeforePrint里写

    GPage := GPage + 1;

    GroupFooterBeforePrint里写

    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的名字)

     

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

     

     

  • 相关阅读:
    中断与异常
    轻松搞定C语言中复杂的声明
    C/C++中数组转换成指针的情况
    Linux下C程序的内存布局
    Java并发和多线程(二)Executor框架
    Java并发和多线程(一)基础知识
    java项目的划分方式:模块优先还是层优先?
    站在面试官角度看面试
    windows环境搭建禅道项目管理工具
    Linux环境搭建禅道项目管理工具
  • 原文地址:https://www.cnblogs.com/lichdr/p/1504561.html
Copyright © 2011-2022 走看看