设计自定义的纸张总是十分麻烦
是否有简便的设计方法。最好是可动态设计纸张大小的
谢谢
请参考:
*枚举本台机器所有安装的打印机及每台打印机所支持纸张的尺寸
CLEAR
ob = CREATEOBJECT("CPrinter")
IF !ob.lError &&标识0b对象属性是否有效
? "windows版本类别"+IIF(ob.ver98,"98,95,ME","NT/2000/XP")
? "默认打印机:" +ob.defaultprintname
? "端口:" +ob.defaultprintport
LOCAL i AS Integer ,J as Integer
FOR i = 1 TO ob.printcount &&枚举所有打印机
ob.currentprintname = ob.Printers[i]
? "打印机:"+ ob.printers[i]+ "端口:"+ ob.portnames [i]
? "打印方向" + IIF(OB.CURrentprinterorientation = 0 ,"纵向","横向")
? "支持打印纸格数目:"+ALLTRIM(STR(ob.papercount))
? "打印宽度范围:" + ALLTRIM(STR(ob.minpaperwidth)) + [-----] + ALLTRIM(STR(ob.maxpaperwidth))
? "打印长度范围:" + ALLTRIM(STR(ob.minpaperlength)) + [----] + ALLTRIM(STR(ob.maxpaperlength))
? ""
? "打印纸张名称 打印纸张规格 打印纸长度*打印纸宽度(0.1mm)"
?"--------------------------------------------------------------------------------------------"
FOR j = 1 TO ob.PaperCount&&列举打印支持的所用纸张
? ob.PaperNames[j] + " "+ +ALLTRIM(STR(ob.PaperSizes[j])) + " "+ ALLTRIM(STR(ob.paperlengths[j])) + "*" + ALLTRIM(STR(ob.paperWidths[j]))
ENDFOR
ENDFOR
ELSE
? "打印机属性不可用"
? ob.cErrMsg &&不可用原因
ENDIF
RELEASE ob
*!*在NT/2000/XP下增加自定义纸张
*!*增加自定义纸张
*!*szPaperName 纸张名字,PaperWidth 纸张宽度,PaperLength 纸张长度
*!*LeftMargin 纸张右边距,TopMargin 上边距,RightMargin 右边距,BottomMargin底边距
*!*以0.1mm单位
*!*在当前打印机增加自定义纸张
ob = CREATEOBJECT("CPrinter")
=ob.add2000custmpaper("cstpaper",1000,10000,0,0,0,0) &&成功返回.t.,失败返回.F.
*!* 在指定打印机增加自定义纸张
ob = CREATEOBJECT("CPrinter"Epson LQ-1600KII")
=ob.add2000custmpaper("cstpaper",1000,10000,0,0,0,0) &&成功返回.t.,失败返回.F.
*!* 或者
ob = CREATEOBJECT("CPrinter")
ob.currentprintname ="Epson LQ-1600KII"
=ob.add2000custmpaper("cstpaper",1000,10000,0,0,0,0) &&成功返回.t.,失败返回.F.
*!* 查找指定的纸张规格打印机是否支持。参数 宽度,长度(0.1MM)
*!*参数宽度,长宽
*!*检查100mm*100m纸张在当前打印机所支持的纸张规格中是否存在
nIndex= ob.FindPaper(1000,1000) 找到返回索引号,否则返回0
?ob.PaperNames[nIndex]
*!*在98 ME,95调整自定定义纸张 参数 宽度,长度(0.1MM)
*把前打印机的自定义纸张调整为100MM*100MM
ob.Adj98CustmerPaper(1000,1000) 调整成功返回.t.,否则返回.f.
*!*自动适应报表自定义纸张
*!*cReportName 报表名
*!*lcPaperName 纸张名 此参数仅对NT./2000/XP用效
*!*lnPaperWidth 自定义纸张宽度,lnPaperHeight 长度 单位0.1mm
*!*成功返回.T.,失败返回.F.
=ob.AdjCustCustmerPaperToReport("myreport.frx","mypaper",1000,1000)
*!* 调整成功返回.t.,否则返回.f.
*!*删除自定义纸张 仅NT/2000/XP有效
*!* 删除自定义纸张规格
*!*PaperName 纸张名
*!*删除成功返回.T.,否则返回失败
=ob.Delete2000CustomPaper("mypaper")