编写打印程序的注意事项
#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属性进行打印。