fastreport 多个page 每个Page 页码显示问题?

jmzgq 2020-10-07 03:59:19
1, 一个报表文件包含多个Page,
2 Page1,对应第一个数据集
3, page2,对应第二个数据集
4, 打印完第一个数据集打印第二个数据集,怎样在打印第二page,页码从1算起?比如第一个page为 2页,第二个为page为3页.分别显示如下,1/2, 2/2, 1/3 2/3. 3/3.
如何实现?
...全文
1069 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmzgq 2020-10-08
  • 打赏
  • 举报
回复
多谢回复,如果针对分组页码显示问题,FASTREPORT的新版本是有功能可以处理的。 现在这个不是针对分组页码显示,只是一般显示方法,用这些代码测试过,暂时没有效果出来。
tanqth 2020-10-07
  • 打赏
  • 举报
回复
这里的情况适用于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的名字)
tanqth 2020-10-07
  • 打赏
  • 举报
回复
这个估计得自己去写代码实现了。

5,916

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧