发票连续打印问题?(100分)

  • 主题发起人 主题发起人 zdt
  • 开始时间 开始时间
Z

zdt

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中定义了报表的大小,预览中显示也是正确的,我连续用QuickRep1.print执行
打印,它要走完一张纸才打第二张(一张的高度超过了我定义的高度),有没有解决的方
法,或直接实现发票的连续打印,谢谢大家了!!!!!!
 
打发票最用rawprint之类的控件。
 
什么rawprint? 能不能说清楚点,谢了!!
 
quickRep+自定义纸张可以实现发票的连续打印的。
我曾经和一个用户在打印机边等待打印时聊过,连续打印对客户来说真是一种痛苦,
等我走的时候,还有一尺高的发票没打完。
 
自定义纸张
是不是就是发票 的大小
 
我自定义了纸的大小,可他打一张发票后,要走完一张A4纸后才打第二张发票,这是怎么回事?
 
要自定义发票的大小和尺寸啊。只要调对了,该问题就会解决啊!
 
在打印机设置中设置相应的大小,使用自定义纸张
 
我想用代码控制,而不要用户输,可不可以??
 
对于针式打印机,可以实现发票的连续打印,连续打印几百页,基本上没有发生错位现象
位置控制精确,发票两侧有纸孔,每两个孔之间的距离为一英寸,
大部分发票的高度一般为3英寸,使用Escape函数向打印机发送底层控制码,
精确设定页长,底层控制码随打印机的品牌不同可能有所差异,但大部分都可以通用
查一下打印机的用户手册,里面会有这方面的讲解
设定纸长之后,就可以实现发票连续打印了,再也不会有楼上各位所说的所谓烦恼了
 
使用Windows本身的纸张设置功能可以精确到1/10毫米
但是打印较多时,可能也会有误差,并造成误差积累,
而使用上面的方法就没有这种担心了
使用下面的函数向打印机发送底层控制码,类似于PB中的PrintSend函数
请参照一下PB中的此函数的用法
function PrintSend(Prn: TPrinter;
S: String): Integer;
begin
Prn.begin
Doc;
Result := Escape(Prn.Handle, PASSTHROUGH{ = 19}, Length(S), PChar(S), nil);
Prn.EndDoc;
if Result = SP_ERROR then
Result := 0 else
Resule := 1;
end;
 
>再也不会有楼上各位所说的所谓烦恼了
程序确实可以连续打印,不过打印机会卡纸呀。
客户烦恼的是这个。呵呵
 
儘量不要用QuickRep1.print打印
最好用線程做
 
Win2000不支持delphi的自定义
软件在98下用Printer打印
设置为
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
try
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
pDMode^.dmPaperSize:=SetMyPrinter.PageSize;
if SetMyPrinter.PageSize=DMPAPER_USER then
begin
pDMode^.dmPaperSize:=DMPAPER_USER;
pDMode^.dmPaperWidth:=SetMyPrinter.PageWidth*10;
pDMode^.dmPaperLength:=SetMyPrinter.PageHeight*10;
end else
PDMode^.dmCopies:=SetMyPrinter.copies;
pDMode^.dmOrientation:=SetMyPrinter.Orientation;
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
except
messagedlg('你的计算机上没有安装打印机。',mterror,[mbok],1);
end;
 
http://www.epson.com.cn/tech_support/faq/dot/lq1600ki/lq1600ki.asp?lq1600ki=13
在WinNT/2000环境下,如何自定义纸张尺寸?
 
To lzboy21:
可不可以说清楚点,最好有源代码,用来控制纸的大小及打印
 
你在QuickRep里设一下纸张大小,打印机里面也要设定一下,多加个自定义的
 
后退
顶部