您好,登录后才能下订单哦!
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   属性可以获得对打印机对象句柄有访问。  
Orientation   决定打印工作在页上的方向   
决定打印工作在页上的方向,垂直或水平。   
__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 then
begin
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中怎么调用驱动打印的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。