Delphi中怎么调用驱动打印


Delphi中怎么调用驱动打印,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
TPrinter类介绍TPrinter类中封装了Windows打印机的接口。
类关系 TObject
  使用TPrinter对象可以执行应用程序中的任何打印操作。可以在Printers单元中通过调用Printer函数来获得一个TPrinter 对象。为了决定如何显示窗体的打印图像,可以使用Tform组件的PrintScale属性。
  在一个文本变量或一个打印机画布准备好后就可以进行打印工作了。打印工作一直进行到调用EndDoe过程。显示在PrintManager(或网络头页)上的题目由Title 属性决定。如果想开始打印工作可以调用BeginDoc方法。结束一个成功打印的工作需要调用EndDoc过程。如果出现问题需要中断打印可以调用Abort方法。

属性列表
Aborted 中断打印
指示当前是否用户中断了打印,从而调用方法
__property bool Aborted ={read = FAborted,nodefalt} ;
如果属性Aborted为真,则表示打印工作已经中断。如果为假值,则表示用户并没有中断打印进程。
Canvas 当前打印页的表面
表示当前打印页的表面。
__property Graphics : : TCanvas * Canvas = { read = GetCanvas } ;
属性Canvas表示一页的打印表面。使用Canvas对象的Brush,Font 和Pen 属性可以决定如何绘制和显示页。一些打印机不支持图像,因此,对这些打印机调用Draw,StretchDraw或CopyRect方法将会失败Capabilities 指示一个打印设备驱动器的当前设置
指示一个打印设备驱动器的当前设置。
__property TPrinterCajpabilities Caoabukutues ={read = FCapabities , nodefault} ;
属性Capabilities 包含了打印机有兼容性,它指定了打印的方向,页数和是否校对。
Copies 指定打印的份数
指定打印的份数。
__property int Copies = {read = GetNumCopies, write =SetNumCopies, nodefault } ;
属性Copies中指定打印的份数。
Fonts 列出当前打印机支持的字体
列出当前打印机支持的字体。
__property Classes ;;TStrings * Fonts = { read =GetFonts } ;
使用Fonts属性可以获得当前打印机支持的字体列表。列表中总是包含有TrueType字体,即使打印机中不包含这种字体,因为Windows Graphies Device Interface(GDI)在打印机使用时可以准确地绘制这种字体。
Handle 提供访问打印机对象句柄的能力
提供访问打印机对象句柄的能力。
__property HdC Handle = { read =GetHandle , node fault };
使用Handle 属性可以获得对打印机对象句柄有访问。
Orientatio 香港云主机n 决定打印工作在页上的方向
决定打印工作在页上的方向,垂直或水平。
__property TpinterOrientation Orientation = { read = GetPrientatiion, write = SetOrienatiion ,nodefault }
使用Orientation 属性可以决定打印机打印的方向。Onienation属性值只能是TPrinterOrientation 类型。下表中列出了属性可能值:
TPrinter::PageHeight
指示当前打印页的像素高度。
__property int PageHeight = {read = GetPageHeight ,nodefault } ;
在属性PageHeight中可以找到当前打印页的像素高度。PageHeight 指示当前打印页的像素高度
指示当前打印页的像素高度。
pateNurnber 指示当前打印页
指示当前打印页。
__property int PageNumber = { read = FPageNumber , nodefault } ;
在属性PageNumber中可以获得当前打印的页码。在调用NewPage方法后属性PageNumber将加1。当页结束处输入回车并写入文本变量时,属性PageNumber也将加1 。
PageWidth 指示当前打印页的像素宽度
指示当前打印页的像素宽度。
__property int PageWidth = {read = GetPageWidth , modefault } ; 在属性PsheWifyh中可以找到当前打印页的像素宽度。Printerlndex 在Printers属性中列出的是当前打印机
指定在Printers属性中列出的打印机是当前打印机。
__property int Printerlndex = { read =GetPrinterlndex , write = SetPrinterlndex ,nodefault } ;
属性Printerlndex指定当前打印机。如果改变了本属性值将自动调用EndDoc方法。如果想选择缺省的打印机,可以将属性Printerlndex 设置为 — 1 。在 Printers 属性中列出了安装的打印机。当前打印机支持的字体列表在Fonts属性中。
Printers 列出所有在Windows中安装的打印机
列出所有在Windows中安装的打印机。
__property Classes : : TStrings * Printers = {read =GePrinters } ; 在Printers属性中列出了所有在Windows 中安装的打印机。属性Printerlndex 指定了当前选择的打印机。当前打印机支持的字体列表在Fonts属性中。 Printing 指示打印工作正在进行
指示打印工作正在进行。
__property bool Printing = {read = FPrinting , nodefault } ;
使用Printing属性可以决定是否正在进行一项打印工作。如果应用程序中调用了BeginDoc方法并在调用EndDoc方法(或Abort方法)之前将把Printing属性设置为真值。
Title 显示在Ptint Manager中主网络头页中的文本
决定显示在Print Manager中和网络头页中的文本。
__property Systen : : AndiString Title = { read = FTitle , wrete = FTitle } ;
属性Title在Print Manager由Windows使用,也作为网络的头页。方法列表
~TPrinter 删除一个打印机实例
__fastcall virtual ~TPrinter ( void ) ;
一般不直接调用~TPrinter方法。打印机对象将自动创建和删除。当调用~TPrinter方法时,它将检查是否打印工作都已经结束。如果都结束了就释放资源。例如句柄、字体和画布等,最后关闭打印机并调用继承的析构函数。Abort 中断打印
void __fastcall Abort(void);
中断打印,放弃未打印数据
使用Abort方法可以在打印工作完成前中断打印,否则将使用EndDoc方法。调用Abort方法后设备将设置为下一个打印工作。BeginDoc 送一个打印工作到打印机中
_void __fastcall BeginDoc(void);
送一个打印工作到打印机中。
调用BeginDoc可以初始化一个打印工作。如果打印工作被成功送入,应用程序将调用EndDoc方法结束打印。打印工作只有在调用EndDoc方法后才实际开始。EndDoc 结束当前打印工作并关闭文本文件变量
void __fastcall EndDoc(void);
结束当前打印工作并关闭文件变量。
调用EndDoc方法将结束打印工作(并关闭当前打开的文体)。打印工作将在EndDoc方法调用结束后开始。在应用程序中调用EndDoc方法后,打印机开始打印。将一个打印工作成功送入打印机后调用EndDoc方法。如果打印工作没成功,则调用Abort方法。GrtPrinter 取回当前打印机
void __fastcall GetPrinter(char* ADevice,char* ADriver,char* APort,int& ADeviceMode);
取回当前打印机。
不需要直接调用GetPrinter方法。可以通过访问Printers属性数组中的打印机来获得。如果想了解更多的信息,可以参见Win32Developer ‘s Reference(WIN32::HLP)中的CreateDC函数。NewPage 开始一个新页
void __fastcall NewPage(void);
开始一个新页,并将PageNumber属性值加1。
使用NewPage方法将强制在打印机的新页上继续打印工作。
NewPage方法将把PageNumber属性值加1。同时将把Canvas对象的Pen属性设置成(0,0)。SetPrinter 指定一个打印机作为当前打印机
void __fastcall SetPrinter(char* ADevice,char* ADriver,char* APort,int ADeviceMode);
指定一个打印机作为当前打印机。
不直接调用SetPrinter方法。可以通过访问Printers属性数组中的打印机来设置。如果想了解更多的信息,可以参见Win32Developer ‘s Reference(WIN32.HLP)中的CreateDC函数。TPrinter 创建一个打印机
__fastcall TPrinter(void);
  创建一个打印机。
  不能直接调用TPrinter方法。TPrinter方法将由Printer函数自动调用。方法为打印机分配内存,并调用继承的构造方法。然后设置正确的驱动器、设备和端口.
TPrinter:
代码演示//你必须先得到打印机的实际尺寸:
var
pointx,pointy:integer;
pointx:=getdevicecaps(printer.handle,logpixelsx);
pointy:=getdevicecaps(printer.handle,logpixelsy);
printer.canvas.TextOut(X*pointx,Y*pointy,Text);//注意Printer要添加Printers引用if printdialog1.Execute thenbegin Printer.BeginDoc; Printer.Title := ‘memo内容’; Printer.Canvas.TextOut(100,100,’打印内容’); Printer.EndDoc;end;//打印字符串函数
Procedure PosPrintStr(SizeType,ColorType:integer; str:string);var ls:TStrings;begin //打印测试参数 小票输出到文件 XSysPrint.Log if PosCfg.blPrnText then begin WritePrintTxt(str); {ls := TStringList.Create; ls.Clear; try ls.Add(str); TEXT_PrintString(PosCfg.sPrinterPort,0,0,ls); finally ls.Free; end; DelayMSec(PosCfg.nPrnDelay);} exit; end; if PosCfg.sPrinterType=’TM300K’ then begin TM300K_PrintStr(sPrinterPortID,SizeType,ColorType,str); DelayMSec(PosCfg.nPrnDelay); //打印延时 end else if PosCfg.sPrinterType=’TM200D’ then begin TM200D_PrintStr(sPrinterPortID,SizeType,ColorType,str); DelayMSec(PosCfg.nPrnDelay); //打印延时 end else if PosCfg.sPrinterType=’TEC200D’ then begin LPTDOT_PrintStr(sPrinterPortID,1,str); //并口打印 DelayMSec(PosCfg.nPrnDelay); //打印延时 end else if PosCfg.sPrinterType=’TM210D’ then begin TM210D_PrintString(sPrinterPortID,SizeType,ColorType,str);//通用并口打印 DelayMSec(PosCfg.nPrnDelay); //打印延时 end else if PosCfg.sPrinterType=’TEXTFILE’ then //通用文本打印 begin TEXT_PrintString(PosCfg.sPrinterPort,SizeType,ColorType,str); DelayMSec(PosCfg.nPrnDelay); //打印延时 end else if PosCfg.sPrinterType=’OTHER’ then begin Other_PrintString(sPrinterPortID,SizeType,ColorType,str); DelayMSec(PosCfg.nPrnDelay); //打印延时 end else begin TM200D_PrintStr(sPrinterPortID,SizeType,ColorType,str); DelayMSec(PosCfg.nPrnDelay); //打印延时 end;end;//模拟打印测试文本procedure WritePrintTxt(sMessage: String);const PRINT_FILE=’XSysPrint.Log’;var fname, fname0: String;fp: TextFile;begin // 创建日志文件 fname:=DirConcat(UGetAppPath,PRINT_FILE); if not FileExists(fname) then begin AssignFile(fp,fname); Rewrite(fp); Writeln(fp,’模拟打印’); Flush(fp); CloseFile(fp); end; // 记录日志信息 AssignFile(fp,fname); try Append(fp); Writeln(fp,sMessage); Flush(fp); finally CloseFile(fp); end;end;看完上述内容,你们掌握Delphi中怎么调用驱动打印的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: 电脑硬盘出现坏道怎么办

这篇文章给大家分享的是有关电脑硬盘出现坏道怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。方法/步骤:1.双击打开“此电脑”图标,右键选择磁盘后点击“属性”进入。此时电脑会打开磁盘的属性窗口,将鼠标移至“工具”选项,随后点击“检…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/29 21:24
下一篇 07/29 21:24

相关推荐