编写打印程序的注意事项

Author: 王金涛 Date: 2001年 25期

?牐犜谑褂肈elphi开发应用系统的时候,打印作为处理结果的一个重要输出环节是必不可少的,下面就讨论了关于打印的几个问题,希望对大家的开发工作有所帮助。
  #1    一、自动检测打印机是否存在
  ?牐牳湛际褂肈elphi的程序员在编写打印程序的时候,经常直接这样书写:“Object.Print”这种样式的代码,而不管是否打印设备准备就绪,所以使用时经常出现系统级的错误,不易为用户使用。
  ?牐犛Ω檬紫燃觳橐幌麓蛴∩璞甘欠翊嬖冢缓蟛拍茏鞒雠卸细萌绾未?理。Delphi 中的Printers是专门用来控制打印机的,在没有安装打印机时,它却会产生并提示I/O错误,所以利用这个原理可以检测打印机是否存在。应该注意的是:要想使打印机正常工作和程序不出错,必须在uses中加入打印程序单元(Printers)。下面的短代码说明了它的工作原理:
  ?牐爌rocedure TForm1.Button1Click(Sender: TObject);??
  ?牐燽egin
  ?牐爄f Printer.Printers.CommaText='' then
  ?牐燤essagedlg('打印机未安装!',mtError,[mbOk],0)
  ?牐爀lse
  ?牐?//Do Somethings to print
  ?牐爀nd;
  #1    二、准确获取当前打印设备的分辨率
  ?牐燱indows下的打印分辨率对打印程序有着至关重要的作用,通过下面的方法可以得到打印设备的分辨率:
  ?牐燬howMessage('x方向分辨率'+inttostr(GetDeviceCaps
  ?牐牐≒rinter.Handle,LOGPIXELSX))+ #13#10+'y方向分辨率:'+
  ?牐爄nttostr(GetDeviceCaps(Printer.Handle,LOGPIXELSY)));?牔?
  #1    三、关于AssignPrn的使用
  ?牐燚elphi中使用AssignPrn简化了文本打印操作,但控制起来很不方便,例如无法知道当前打印的行数,无法灵活改变字体字型等等。所以如果想达到一个良好的控制效果,建议使用打印机的Canvas属性进行打印。