编写打印程序的注意事项 王金涛 2001年 25期 在使用Delphi开发应用系统的时候,打印作为处理结果的一个重要输出环节是必不可少的,下面就讨论了关于打印的几个问题,希望对大家的开发工作有所帮助。   #1 一、自动检测打印机是否存在   刚开始使用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;   #1 二、准确获取当前打印设备的分辨率   Windows下的打印分辨率对打印程序有着至关重要的作用,通过下面的方法可以得到打印设备的分辨率:   ShowMessage('x方向分辨率'+inttostr(GetDeviceCaps   (Printer.Handle,LOGPIXELSX))+ #13#10+'y方向分辨率:'+   inttostr(GetDeviceCaps(Printer.Handle,LOGPIXELSY)));   #1 三、关于AssignPrn的使用   Delphi中使用AssignPrn简化了文本打印操作,但控制起来很不方便,例如无法知道当前打印的行数,无法灵活改变字体字型等等。所以如果想达到一个良好的控制效果,建议使用打印机的Canvas属性进行打印。