怎样不换页打印.

wxmijl 2007-10-31 02:24:00
我这的是POS系统,要求每扫一个商品就打印出该商品信息,当全部扫完顾客结账时打印出小结,然后走纸换页.
我现在是每打印一个商品信息就会走纸换页,没达到以上目的.
我的打印代码是:
procedure TForm1.PrintStrings(Strings: TStrings);
var
Prn: TextFile;
i: word;
begin
AssignPrn(Prn);
try
Rewrite(Prn);
try
for i := 0 to Strings.Count - 1 do
write(Prn, Strings.Strings[i]);
finally
CloseFile(Prn);
end;
except
on EInOutError do
MessageDlg('文本打印出错!', mtError, [mbOk], 0);
end;
end;

不执行"CloseFile(Prn);"就不开始打印,执行了,就会打印并走纸换页.
请问各位大侠,怎么样才能不让他走纸换页的打印完
...全文
143 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxmijl 2008-02-04
  • 打赏
  • 举报
回复
还是贴个解决办法,也许以后有人能用的上。


不换行打印
procedure TFrmMain.AddPrintStrings(Strings: TStrings);
var
Prn: TextFile;
i: word;
begin
Assignfile(Prn,'lpt1');
printer.Canvas.Font.Name:='宋体';
printer.Canvas.Font.Size:=9;
printer.Canvas.Font.Charset:=GB2312_CHARSET;
try
Rewrite(Prn);
try
for i := 0 to Strings.Count - 1 do
writeln(Prn, Strings.Strings[i]);
finally
CloseFile(Prn);
end;
except
on EInOutError do
MessageBox(Handle,PChar('文本打印出错!'),'警告',MB_ICONEXCLAMATION or MB_OK);
end;
end;


--***************以下是换行打印的---------------------------
procedure TFrmMain.PrintStrings(Strings: TStrings);
var
Prn: TextFile;
i: word;
begin
AssignPrn(Prn);
try
Rewrite(Prn);
printer.Canvas.Font.Name:='宋体';
printer.Canvas.Font.Size:=9;
printer.Canvas.Font.Charset:=GB2312_CHARSET;
try
for i := 0 to Strings.Count - 1 do
writeln(Prn, Strings.Strings[i]);
finally
CloseFile(Prn);
end;
except
on EInOutError do
MessageBox(Handle,PChar('文本打印出错!'),'警告',MB_ICONEXCLAMATION or MB_OK);
end;
end;
wxmijl 2008-02-04
  • 打赏
  • 举报
回复
这么久都没人解决,哎!以上说法都无法解决的问题,我google到,还是谢谢各位了,送分
llh6795 2007-11-22
  • 打赏
  • 举报
回复
关注中
sy_100000 2007-11-21
  • 打赏
  • 举报
回复
AssignPrn(Prn);可以打印,因为分配了一个文件指针给打印机。
楼主要不换页打印,有三种方案,一种是使用打印机底层的硬拷贝指令,这种方法比较麻烦,不说;再一种是使用楼主的AssignPrn方案;最后一种是使用VCL的Printers单元。

先分析楼主的以下代码:
AssignPrn(Prn);
Append(Prn);
try
……
finally
CloseFile(Prn);
end;
因为楼主调用了CloseFile(Prn);这就是换页的原因。所以楼主只要在准备换页时再调用CloseFile(Prn)即可。

最后一种方案:
Printer.BeginDoc;
try
……
finally
Printer.EndDoc;
end;
一般人也是固定了这种代码结构,固化了自己的思维,不知变通。Printer.EndDoc,Printer.NewPage,都会引起换页,所以同样只要在准备换页时再调用Printer.EndDoc,Printer.NewPage即可。
tradejevons 2007-11-20
  • 打赏
  • 举报
回复
procedure TForm1.PrintStrings(Strings: TStrings);
var
Prn: TextFile;
i: word;
begin
AssignPrn(Prn);
try
Rewrite(Prn);
try
for i := 0 to Strings.Count - 1 do
write(Prn, Strings.Strings[i]);
finally
CloseFile(Prn);
end;
except
on EInOutError do
MessageDlg( '文本打印出错! ', mtError, [mbOk], 0);
end;
end;



CloseFile(Prn); 这个语句就能打印吗?不可能,你是创建了一个文本文件,然后写入信息,CloseFile(Prn);
是关闭,没有涉及打印。

wxmijl 2007-11-05
  • 打赏
  • 举报
回复
CSDN的专家那去了,还是觉得分少呀?怎么就没人回答呢?
wxmijl 2007-11-02
  • 打赏
  • 举报
回复
怎么没人知道吗?
wxmijl 2007-11-01
  • 打赏
  • 举报
回复
执行CloseFile(Prn); 就会开始打印呀
oushengfen 2007-10-31
  • 打赏
  • 举报
回复
你的打印语句呢,在那里?
gjw310 2007-10-31
  • 打赏
  • 举报
回复
不懂,顶一下

5,392

社区成员

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

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