在使用Delphi开发应用系统的时候,打印作为处理结果的一个重要输出环节是必不可少的,下面就讨论了关于打印的几个问题,希望对大家的开发工作有所帮助。
一、自动检测打印机是否存在
刚开始使用Delphi的程序员在编写打印程序的时候,经常直接这样书写:“Object.Print”这种样式的代码,而不管是否打印设备准备就绪,所以使用时经常出现系统级的错误,不易为用户使用。
应该首先检查一下打印设备是否存在,然后才能作出判断该如何处理。Delphi 中的Printers是专门用来控制打印机的,在没有安装打印机时,它却会产生并提示I/O错误,所以利用这个原理可以检测打印机是否存在。应该注意的是:要想使打印机正常工作和程序不出错,必须在uses中加入打印程序单元(Printers)。下面的短代码说明了它的工作原理:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Printer.Printers.CommaText='' then
Messagedlg('打印机未安装!',mtError,[mbOk],0)
else
//Do Somethings to print
end;
二、准确获取当前打印设备的分辨率
Windows下的打印分辨率对打印程序有着至关重要的作用,通过下面的方法可以得到打印设备的分辨率:
ShowMessage('x方向分辨率'+inttostr(GetDeviceCaps
(Printer.Handle,LOGPIXELSX))+ #13#10+'y方向分辨率:'+
inttostr(GetDeviceCaps(Printer.Handle,LOGPIXELSY)));
三、关于AssignPrn的使用
Delphi中使用AssignPrn简化了文本打印操作,但控制起来很不方便,例如无法知道当前打印的行数,无法灵活改变字体字型等等。所以如果想达到一个良好的控制效果,建议使用打印机的Canvas属性进行打印。