FastReport分组页码

本文介绍如何在FastReport2.53中实现分组页码的设置,包括每组强制分页及页码重新计数的方法。通过两次报表遍历获取各分组页数并展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里的情况适用于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的名字)

 

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

 

 

转载于:https://www.cnblogs.com/lichdr/archive/2009/06/16/1504561.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值