[求助]打印四联发票的针式打印机和喷墨打印机在编程控制上有什么不同 [求助]打印四联发票的针式打印机和喷墨打印机在编程控制上有什么不同由于现在打印都是在喷墨打印机上测试的但要在针式打印机上的使用的话,会有什么不同想知道编程的时候要改变什么 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用代码实现,你参考一下,希望有帮助...我在激光上面试过,没什么特别大差别Function TSysPrinter_1.PrintMe: Boolean;Var PrnDevice, PrnDriver, PrnPort: Array[0..255] Of Char; PrnHandle: THandle; PrnMode: PDeviceMode;Begin Result:= False; { 设定打印参数 } Try Printer.GetPrinter(PrnDevice, PrnDriver, PrnPort, PrnHandle); Except MessageBox(Application.Handle, '无法获取系统打印机信息!', '系统信息', MB_OK + MB_ICONERROR); Exit; End; If PrnHandle = 0 Then Begin MessageBox(Application.Handle, '无法获取系统打印机信息!', '系统信息', MB_OK + MB_ICONERROR); Exit; End Else Begin PrnMode:= GlobalLock(PrnHandle); With PrnMode^ Do Begin //打印份数 dmFields:= dmFields Or dmCopies; dmCopies:= 1; //打印方向 dmFields:= dmFields Or dmOrientation; dmOrientation:= DMORIENT_PORTRAIT; //纸张类型为用户自定义 dmFields:= dmFields Or dmPaperSize; dmPaperSize:= DMPAPER_USER; //纸宽,单位为0.1mm dmFields:= dmFields Or dmPaperWidth; dmPaperWidth:= PaperWid; //纸长,单位为0.1mm dmFields:= dmFields Or dmPaperLength; dmPaperLength:= PaperLen; dmFields:= dmFields Or PrnMode^.dmLogPixels; dmLogPixels:= 300; ResetDC(Printer.Handle, PrnMode^); End; End; { 开始打印 } Try Printer.Canvas.Font.Name:= SysInfo.PrnFont; Printer.Canvas.Font.Size:= SysInfo.PrnSize; Printer.BeginDoc; { 税务登记号 } Printer.Canvas.TextOut(pstX_RegNO, pstY_RegNO, str_RegNO); { 收款单位 } Printer.Canvas.TextOut(pstX_Payee, pstY_Payee, str_Payee); { 付款单位 } Printer.Canvas.TextOut(pstX_Payer, pstY_Payer, str_Payer); Printer.Canvas.TextOut(pstX_PayerID, pstY_PayerID, str_PayerID); { 经营项目 } Printer.Canvas.TextOut(pstX_Item1, pstY_Item1, str_Item1); Printer.Canvas.TextOut(pstX_Charge1, pstY_Charge1, str_Charge1); Printer.Canvas.TextOut(pstX_Item2, pstY_Item2, str_Item2); Printer.Canvas.TextOut(pstX_Charge2, pstY_Charge2, str_Charge2); Printer.Canvas.TextOut(pstX_Item3, pstY_Item3, str_Item3); Printer.Canvas.TextOut(pstX_Charge3, pstY_Charge3, str_Charge3); Printer.Canvas.TextOut(pstX_Item4, pstY_Item4, str_Item4); Printer.Canvas.TextOut(pstX_Charge4, pstY_Charge4, str_Charge4); Printer.Canvas.TextOut(pstX_Item5, pstY_Item5, str_Item5); Printer.Canvas.TextOut(pstX_Charge5, pstY_Charge5, str_Charge5); { 金额合计 } Printer.Canvas.TextOut(pstX_Total, pstY_Total, str_Total); Printer.EndDoc; Result:= True; Except MessageBox(Application.Handle, '无法处理打印信息,请确定打印机驱动程序安装正确!', '系统信息', MB_OK + MB_ICONERROR); Exit; End;End; ADO升级后出现问题 列表数据导入零时数据库问题 如何用delphi把程序做成ocx,通过网页调用呢? !!!ADO问题求助 我晕了,键值问题,恳请赐教 判断TCanvas.Handle是显示器还是打印机器 关于线程的挂起与唤醒????急!!请各位指教!!! 工资统计的问题??急用,分不够可以再加 ---我想返回其中的sumqty,怎么做? 简单SQL问题,先答对者先送分! 打印机套打发票问题。。。 今天问一个关于串口的问题!我真的搞不懂!
我在激光上面试过,没什么特别大差别Function TSysPrinter_1.PrintMe: Boolean;
Var
PrnDevice, PrnDriver, PrnPort: Array[0..255] Of Char;
PrnHandle: THandle;
PrnMode: PDeviceMode;
Begin
Result:= False; { 设定打印参数 }
Try
Printer.GetPrinter(PrnDevice, PrnDriver, PrnPort, PrnHandle);
Except
MessageBox(Application.Handle, '无法获取系统打印机信息!', '系统信息',
MB_OK + MB_ICONERROR);
Exit;
End; If PrnHandle = 0 Then
Begin
MessageBox(Application.Handle, '无法获取系统打印机信息!', '系统信息',
MB_OK + MB_ICONERROR);
Exit;
End
Else
Begin
PrnMode:= GlobalLock(PrnHandle);
With PrnMode^ Do
Begin
//打印份数
dmFields:= dmFields Or dmCopies;
dmCopies:= 1; //打印方向
dmFields:= dmFields Or dmOrientation;
dmOrientation:= DMORIENT_PORTRAIT; //纸张类型为用户自定义
dmFields:= dmFields Or dmPaperSize;
dmPaperSize:= DMPAPER_USER; //纸宽,单位为0.1mm
dmFields:= dmFields Or dmPaperWidth;
dmPaperWidth:= PaperWid; //纸长,单位为0.1mm
dmFields:= dmFields Or dmPaperLength;
dmPaperLength:= PaperLen; dmFields:= dmFields Or PrnMode^.dmLogPixels;
dmLogPixels:= 300; ResetDC(Printer.Handle, PrnMode^);
End;
End; { 开始打印 }
Try
Printer.Canvas.Font.Name:= SysInfo.PrnFont;
Printer.Canvas.Font.Size:= SysInfo.PrnSize; Printer.BeginDoc; { 税务登记号 }
Printer.Canvas.TextOut(pstX_RegNO, pstY_RegNO, str_RegNO); { 收款单位 }
Printer.Canvas.TextOut(pstX_Payee, pstY_Payee, str_Payee); { 付款单位 }
Printer.Canvas.TextOut(pstX_Payer, pstY_Payer, str_Payer);
Printer.Canvas.TextOut(pstX_PayerID, pstY_PayerID, str_PayerID); { 经营项目 }
Printer.Canvas.TextOut(pstX_Item1, pstY_Item1, str_Item1);
Printer.Canvas.TextOut(pstX_Charge1, pstY_Charge1, str_Charge1); Printer.Canvas.TextOut(pstX_Item2, pstY_Item2, str_Item2);
Printer.Canvas.TextOut(pstX_Charge2, pstY_Charge2, str_Charge2); Printer.Canvas.TextOut(pstX_Item3, pstY_Item3, str_Item3);
Printer.Canvas.TextOut(pstX_Charge3, pstY_Charge3, str_Charge3); Printer.Canvas.TextOut(pstX_Item4, pstY_Item4, str_Item4);
Printer.Canvas.TextOut(pstX_Charge4, pstY_Charge4, str_Charge4); Printer.Canvas.TextOut(pstX_Item5, pstY_Item5, str_Item5);
Printer.Canvas.TextOut(pstX_Charge5, pstY_Charge5, str_Charge5); { 金额合计 }
Printer.Canvas.TextOut(pstX_Total, pstY_Total, str_Total); Printer.EndDoc;
Result:= True;
Except
MessageBox(Application.Handle,
'无法处理打印信息,请确定打印机驱动程序安装正确!', '系统信息', MB_OK +
MB_ICONERROR);
Exit;
End;
End;