我这的是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);"就不开始打印,执行了,就会打印并走纸换页.
请问各位大侠,怎么样才能不让他走纸换页的打印完
我现在是每打印一个商品信息就会走纸换页,没达到以上目的.
我的打印代码是:
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);"就不开始打印,执行了,就会打印并走纸换页.
请问各位大侠,怎么样才能不让他走纸换页的打印完
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);
是关闭,没有涉及打印。
楼主要不换页打印,有三种方案,一种是使用打印机底层的硬拷贝指令,这种方法比较麻烦,不说;再一种是使用楼主的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即可。
不换行打印
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;