千家信息网

Delphi中怎么调用驱动打印

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Delphi中怎么调用驱动打印,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。TPrinter类介绍TPrinter类中封装了Window
千家信息网最后更新 2026年10月31日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 属性可以获得对打印机对象句柄有访问。


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中怎么调用驱动打印的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

打印机 属性 方法 工作 指示 字体 对象 像素 文本 函数 支持 驱动 成功 内容 变量 句柄 应用程序 文件 方向 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 西安纸贵互联网科技有限公司 为想互联网科技怎么样 互联网科技缩写 赫美联合互联网科技 互联网科技汛 互联网科技公司做什么 卓越科技互联网 招聘 佩信高科技互联网 互联网科技寓意 团飞科技与伯堂互联网服务平台 茂名市互联网科技产业园 来此购互联网科技有限公司 上海宁丞科技互联网 宝灵互联网科技有限公司 中和天地互联网科技有限公司 广州百诚互联网科技有限公司官网 西安有哪些互联网高科技企业 众联互联网络科技 如何强化互联网金融科技 迪茉互联网科技 宜安科技 互联网金融 丰台科技园 互联网 广西互联网科技公司 人人互联网科技是培训 链环科技传统企业怎么转型互联网 国大互联网教育科技有限公司工作 长沙茂晟互联网科技有限公司 用友工业互联网科技发展 上海钢联属于互联网科技股吗
0