| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3378 人关注过本帖
标题:如何打印任意大小的纸张
只看楼主 加入收藏
hongwei
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-12-1
收藏
 问题点数:0 回复次数:3 
如何打印任意大小的纸张
VFP6。0一直是对打印纸张的设计有一定的弊端。

设计自定义的纸张总是十分麻烦

是否有简便的设计方法。最好是可动态设计纸张大小的

谢谢
搜索更多相关主题的帖子: 纸张 打印 
2005-12-06 19:09
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 

请参考:

*枚举本台机器所有安装的打印机及每台打印机所支持纸张的尺寸
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")


shenkj001@
2005-12-07 10:43
hongwei
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-12-1
收藏
得分:0 

听说新的版本有更简单的办法,是不是呀

2005-12-07 15:24
liumqx
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-8-24
收藏
得分:0 
也可以在控制面板-打印机下,右键,高级属性下添加自已需要的自定义纸张.
2005-12-10 20:37
快速回复:如何打印任意大小的纸张
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015770 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved