fastreport连续打印条码,中间会停顿下,请问如何解决

yjw88123 2010-12-10 01:58:54
fastreport连续打印条码,中间会停顿下,请问如何解决
...全文
894 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjw88123 2010-12-10
  • 打赏
  • 举报
回复
fastreport属性里没有可以设置的地方吗?
CraxyMouse 2010-12-10
  • 打赏
  • 举报
回复
你用用的是专业的条码打印机吗?
如果不是下面可以忽略不看。
如果是停顿是正常的,因为fastreport是用驱动进行打印的。用驱动打印
也就是你要打印的内容是画到打印机的,这时传给打印机的内容就比较大。
还有打印机的缓存比较小,这就可能不会一次传完,还有打印机处理的比较慢
所以会出现停顿。
如果不想停顿(标签内容比较少时,标签内容多时也一样会停顿)可以考虑用打印机指令来完成。

我写的一款条码标签打印软件(E-Label)支持常用的打印机的高级指令功能。你可以看一下http://www.ync-tech.com
  • 打赏
  • 举报
回复

FastReport中如何实现连续打印?

很多人认为Fr不能实现连续打印,以为只能通过自己写函数调用打印函数来实现连续打印,实际

上,Fr可以轻易的实现连续打印,同时,实现时又是非常简单,你甚至可以在你的程序的打印设

置中简单的让客户选择是否连续打印,其它都可以保持不变。

function PelsTomm(Pels:Extended):Extended;

begin

Result:=Pels/Screen.PixelsPerInch*25.4;

end;

procedure PrintSerial(Frx:TFrxReport;SequencePage:Byte=0);

var

P:TfrxReportPage;

R,R1:Extended;

begin

{必须是二遍报表,否则无法计算总页数。

下面的方法只适用于没有页脚的情况,因为如果有页脚的话

FreeSpace就始终为0了。可以用报表脚来代替。

因为是连续打印,也可以看作只有一页,报表脚也就相当于页脚了}

if not Frx.Engine.DoublePass then Exit;

//SequencePage指要连续打印的页面,普通报表就是0

P:=TfrxReportPage(Frx.Pages[SequencePage]);

R1:=P.TopMargin+P.BottomMargin;

while Frx.PrepareReport do

begin

if (Frx.Engine.TotalPages<=1) then Break;

R:=Pelstomm(Frx.Engine.TotalPages*Frx.Engine.PageHeight-

Frx.Engine.FreeSpace)+R1;

P:=TfrxReportPage(Frx.Pages[SequencePage]);

P.PaperHeight:=R;

end;

{必须用上面的循环代码来得到准确的空白区域

不能用通过计算总页数减去各页的页边距的方法来获得空白区域

因为如果碰到一条记录过宽的情况导致换页,就不准确了。}

R:=Pelstomm(Frx.Engine.TotalPages*Frx.Engine.PageHeight-

Frx.Engine.FreeSpace)+R1;

P:=TfrxReportPage(Frx.Pages[SequencePage]);

P.PaperHeight:=R;

end;

在预览或打印前先调用PrintSerial即可。


参考地址

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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