当前位置:主页>仓库管理软件> 列表

老问题了,如何在预览中得到打印总页数,100分

记账软件版1楼: 如何在预览中得到打印总页数,
我不想用Prepare,速度太慢。有没有其他方法,
就象reportbuild那样子也OK(在预览中自增总页数),或者就直接得到总页数,
E_mail:chanry@21cn.com

2楼: [totalpages] 如速达

3楼: 你打开frReport->file->report options->two-pass report选中再用[totalpages]

4楼: 楼上说的对!

5楼: 能不能详细一点?
我只想用quickreport,
不想用其他的第三控件。

6楼: 这个应该有这个属性和事件的吧!!

看一下DEMO就可以了!!

记账软件版7楼: 高手啊高手快出来吧!

8楼: 你实在没咒念时,算一下不就得了。

9楼: 我现在是用算得,就是不怎么特别准确

1、我是动态设置报表的,所有如果有抬头[Title]的话,
第一页就会有抬头,其他的页面就肯定不回有,因此就会有这点误差;
2、更何况本来quickreport随着纪录的增加也会有些误差---这个我到解决了;

所以想看看有没有什么别的方法可以精确一点

10楼: 晕死,自己研究一下不就出来了?

11楼: 在onpreview事件里面的endpage 让一个变量 inc();

12楼: 楼上的方法我找用过了,不行。
用这种算的方法怎么样都不会精确的,
我只想精确找个精确点的方法,用Prepare就很精确,就是太慢了,等于浏览两遍 如财务管理

13楼: 在 quickreport 的 每一页结束 事件中,让一个变量加一 啊。

记账软件版14楼: 楼上的方法我都有试过,不行,
那变量是可以赋值,但在浏览中读出的仍然是浏览前的初始值

15楼: 在fastreport中,选择两遍报表

16楼: 恐怕按你的要求来说(不用Prepare)可能必须用计算的方法:
先算出特打印的项目数量Maxconut,然后
Maxcount:=Maxcount+Tiltle折算成几条项目
page:=Maxcount div 每页最多能放多少条项目
if page=0 then page=1;
应该比较精确的,主要是设计时Title的高度控制成项目的整数倍即可

17楼: 在fastreport中,你打开frReport->file->report options->two-pass report选中再用
[totalpages]

18楼: to wangsea:
我用的方法和你的说的一样,不过就是我上面有提到的:

1、我是动态设置报表的,所有如果有抬头[Title]的话,
第一页就会有抬头,其他的页面就肯定不回有,因此就会有这点误差;
2、更何况本来quickreport随着纪录的增加也会有些误差---这个我到解决了;


所以怎么样都会有误差了,看了不用Prepare,真的没有办法了...

19楼: 不精确,估计手动换页就精确了,如下试试:
假设当前打印行是currentRow,每页仅打27条数据,则
var currentrow:integer;
TQRForm1..QuickRep1BeforePrint(Sender: TCustomQuickRep;var PrintReport: Boolean);
begin
currentrow:=0;
xxx.DataSet.First;
....
end;
procedure TQRForm1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
MoreData:=currentIndex if MoreData then
begin
.....//数据赋值等
if (currentrow=24) then quickrep1.NewPage //假设第一页有title,只能打24条
else if (current>27) and (currentrow mod 27=0) then
quickrep1.NewPage; //从第二页起固定27条换页
....//进度处理等
end;
inc(currentrow);
end;

20楼: to wangsea:
我和你的算法差不多,埃,看来只能这样了,谢谢各位参与

记账软件版21楼: 多人接受答案了。