fastreport暂停打印问题?

moqiyayan 2012-08-14 02:48:24
FastReport在打印报表的时候,如果页数太多,想在打印的时候,每打印100页,打印机停止打印2分钟。
可是程序在win7下运行正常,是先将前100页发送到打印机上,打印机开始打印,然后再暂停2分钟,再接受100页的打印任务。
同样的程序,xp下开始发送的100页的打印任务,打印机不能立马打印,而是等到最后,所有打印任务都发送完毕才开始打印,请问这是怎么回事?哪里有问题。

fastReport版本:4.9.20
在fastReport的OnPrintPage下写的暂停代码。
...全文
228 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
moqiyayan 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:
这个打印需要在哪个事件里写?这样写打印之前可以预览吗?预览的是全部的还是部分的?

引用 2 楼 的回复:

在打印机设置中的高级中的后台打印,选择立即打印。
如果还是不行,建议楼主在程序中控件打印页数。

fastreport支持选页打印。
self.frxReport1.PrintOptions.PageNumbers:='1-100';//连续打……
[/Quote]

还有个问题,就是这里打印的暂停是从打印任务发送去打印机开始计时,是否可以从第一个打印任务结束后开始计时呢?
babydog01 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
这个打印需要在哪个事件里写?这样写打印之前可以预览吗?预览的是全部的还是部分的?

引用 2 楼 的回复:

在打印机设置中的高级中的后台打印,选择立即打印。
如果还是不行,建议楼主在程序中控件打印页数。

fastreport支持选页打印。
self.frxReport1.PrintOptions.PageNumbers:='1-100';//连续打印

self.frxRe……
[/Quote]
这个是在主程序中,不适合在预览中打印。
self.frxReport1.LoadFromFile(ExtractFilePath(Paramstr (0))+'报表格式一.fr3');
self.frxReport1.PrintOptions.ShowDialog:=false;
self.frxReport1.Report.PrepareReport;

//取最大页数用循环控制
self.frxReport1.PrintOptions.PageNumbers:='1-100';//打印1-100页
self.frxReport1.Report.Print;
//等待2分钟
self.frxReport1.PrintOptions.PageNumbers:='101-200';//打印101-200页
self.frxReport1.Report.Print;

当然还要考虑最大页数等。
即使设置了打印页数,预览会是全部记录,打印时会弹出对话框,不好自动处理。凡事总得有个取舍,楼主自己考虑吧。
moqiyayan 2012-08-16
  • 打赏
  • 举报
回复
这个打印需要在哪个事件里写?这样写打印之前可以预览吗?预览的是全部的还是部分的?
[Quote=引用 2 楼 的回复:]

在打印机设置中的高级中的后台打印,选择立即打印。
如果还是不行,建议楼主在程序中控件打印页数。

fastreport支持选页打印。
self.frxReport1.PrintOptions.PageNumbers:='1-100';//连续打印

self.frxReport1.PrintOptions.PageNumbers:='1,3,5';//选页打印
[/Quote]
moqiyayan 2012-08-16
  • 打赏
  • 举报
回复
我是先预览了,然后再在预览之后点fastreport上的打印。请问该在哪个事件里写这个暂停?暂停的时候还要弹出对话框来进行计时。

[Quote=引用 3 楼 的回复:]

个人觉得net stop spooler ,再net start spooler 一般我是这样手工处理的,真要暂停好像不是fastreport的事情
[/Quote]
moqiyayan 2012-08-16
  • 打赏
  • 举报
回复
打印机的属性——高级——使用后台打印一边程序更快地结束打印——立即开始打印 已勾选。

[Quote=引用 1 楼 的回复:]

看下XP机打印机驱动设置:属性——高级 中缓存打印的设置是不是设成立即打印。
[/Quote]
jonsenkiar 2012-08-14
  • 打赏
  • 举报
回复
个人觉得net stop spooler ,再net start spooler 一般我是这样手工处理的,真要暂停好像不是fastreport的事情
babydog01 2012-08-14
  • 打赏
  • 举报
回复
在打印机设置中的高级中的后台打印,选择立即打印。
如果还是不行,建议楼主在程序中控件打印页数。

fastreport支持选页打印。
self.frxReport1.PrintOptions.PageNumbers:='1-100';//连续打印

self.frxReport1.PrintOptions.PageNumbers:='1,3,5';//选页打印
Oraclers 2012-08-14
  • 打赏
  • 举报
回复
看下XP机打印机驱动设置:属性——高级 中缓存打印的设置是不是设成立即打印。

5,388

社区成员

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

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