如何控制打印页数?(50分)

  • 主题发起人 主题发起人 cowboy
  • 开始时间 开始时间
C

cowboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我编一个打印程序,在印好的表格上填上不同的内容。
我使用的是QR。每次打印,由于纸的位置有可能稍微
移动,所以打印过程中要不断看看打印效果,调整纸
的位置。而使用QR,打印时是一次从头打到尾,发现
问题只能强行停止,很不方便。用身摸方法编程才能作
到我敲一下键盘打印一张或几张纸?
另外,afterprint方法如何使用?能否利用它来控制?
谢谢。
 
其实你可以用printer对象的canvas来实现,可以不用qp
printer.begin
Doc;
printer.Canvas.Font.Name:='宋体';
printer.Canvas.Font.Size:=11;
printer.canvas.TextOut(170,80,text);
//在left-170,top-80 输出text
printer.EndDoc;

 
qr中可以设定打印第几页到第几页的,你说的是什么意思?
 
老莫:
我是在打印某种证件,将数据库中的姓名、
身份证号等打印在指定位置,若用printer
对象则其他部分编程将很麻烦。
wuyi:
我在打印证件,共几千张,需要准确定位,打印
过程肯定会出现偏差。每打一张,看是否合适,
不合适就调整纸的位置,若合适则接着打。
按你提供的方法,每打一张要进入到print setup中,
太费时间,我需要的是打印一张结束后,暂停一下。这
时根据需要判断调整纸还是接着打印。若接着打印,按
一个键就可以的方法。
 
不必每一页都要进入print Setup中的,你在程序中就可以控制它。
yourQr.PrinterSettings.FirstPage := ??
YourQr.PrinterSettings.lastPage := ??
 
这个很容易,只要
for i:=1 to x
begin
printer.begin
Doc;
printer.Canvas.Font.Name:='宋体';
printer.Canvas.Font.Size:=11;
printer.canvas.TextOut(170,80,text);
//在left-170,top-80 输出text
printer.EndDoc;
showmessage('print');
i:=i+1;
end;
不就行了。
 
忘了对你说,你可以对输出的数据表做一个遍历,一次
打印一条记录。
 
1. 最简单: 把printer的进纸设成手动进纸就可以了.
2.
var
i:integer;
begin
repeat
inc(i);
yourQr.PrinterSettings.FirstPage := i;
yourQr.PrinterSettings.lastPage := i;
yourQr.PrinterSettings.ApplySettings;
try
yourQr.Print;
except
break;
end;
until MessageDlg('continue?',mtConfirmation, [mbYes, mbNo], 0) = mrNo;
 
多人接受答案了。
 
后退
顶部