在程序中设置默认打印机和默认纸张
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将某个打印机设为系统默认打印机(使用myfll.fll):
*-------------
*combo1的 gotfocus:
THIS.rowsource=''
nprints=APRINTERS(gaPrinters,1) && 是否有安装的打印机驱动程序
FOR i=1 TO nprints
bo1.additem(UPPER(gaPrinters(i,1)))&&所有打印机列表
EndFor
cCurrentPrinter=UPPER(SET("Printer",2)) &&获得缺省打印机名称
Set Library To myfll.fll
cCurrentPrinter=UPPER(GetDefaultPrinter())
Set Library To
bo1.displayValue=cCurrentPrinter
*-------------
*command1"设置成默认"的 click:
Set Library To myfll.fll
If SetDefaultPrinter(bo1.displayValue)&&所要设置的新打印机
=messagebox("默认打印机“"+ALLTRIM(bo1.displayValue)+"”设置成功!",0+0+0,"默认打印机")
Else
=messagebox("设置失败!",0+0+0,"默认打印机")
EndIf
Set Library To
*-----------------
*设置默认纸张:
*thisform.gscombobox1.Displayvalue 为:“报表.frx”
*bo1.displayValue 为:自定义纸张名称,如A4、B5
IF LEN(ALLTRIM(thisform.gscombobox1.Displayvalue))<>0
nPrintCount=APRINTERS(aArrayPrint) &&将安装在 Windows 打印管理器中的打印机名称存入内存变量数组中
*IF nPrintCount=0 && 如果没有安装打印机,函数的返回值为零。
* =MESSAGEBOX("当前系统中没有安装打印机!")
* RETURN .F.
*ENDIF
cCurrentPrinter=SET("Printer",2) &&获得缺省打印机名称
Set Library To myfll.fll
cCurrentPrinter=GetDefaultPrinter()
Set Library To
FOR i=1 TO nPrintCount && 循环次数为系统安装的打印机数
IF UPPER(aArrayPrint(i,1))=cCurrentPrinter
cPort=aArrayPrint(i,2)&&输出打印机端口
ENDIF
ENDFOR
*IF SUBSTR(cPort,1,3)#"LPT"
* =MESSAGEBOX("当前打印机不是本地打印机!")
* RETURN .F.
*ENDIF
Set Library To myfll.fll
ssa=''
ssa=ssa+'DRIVER=winspool'+chr(13)
*ssa=ssa+'DEVICE='+ALLTRIM(PaperInfo(bo1.displayValue,2))+chr(13)&&自定义纸张名称
ssa=ssa+'DEVICE='+ALLTRIM(cCurrentPrinter)+chr(13)&&获得缺省打印机名称
ssa=ssa+'OUTPUT='+ALLTRIM(cPort)+chr(13)&&输出打印机端口
ssa=ssa+'ORIENTATION='+ALLTRIM(STR(PRTINFO(1, cCurrentPrinter)))+chr(13) &&纸张方向
ssa=ssa+'PAPERSIZE='+ALLTRIM(STR(PaperInfo(bo1.displayValue,1)))+chr(13) &&纸张大小
ssa=ssa+'DEFAULTSOURCE='+ALLTRIM(STR(PRTINFO(7, cCurrentPrinter)))+chr(13) &&8 &&默认纸源
ssa=ssa+'PRINTQUALITY='+ALLTRIM(STR(PRTINFO(8, cCurrentPrinter)))+chr(13) &&180 一个正的值指明每英寸点数的横向分辩率 (DPI) 或一个负值指明打印质量。
ssa=ssa+'YRESOLUTION='+ALLTRIM(STR(PRTINFO(11, cCurrentPrinter)))+chr(13)&&180 每英寸点数的纵向分辩率 (DPI)。若不可用, 返回 -1。
ssa=ssa+'TTOPTION='+ALLTRIM(STR(PRTINFO(12, cCurrentPrinter)))+chr(13) &&1 &&指明如何打印 TrueType 字体的值
ssa=ssa+'COLLATE='+ALLTRIM(STR(PRTINFO( 13,cCurrentP
rinter)))+chr(13) &&1 指明是否比较输出的值
ssa=ssa+'COLOR='+ALLTRIM(STR(PRTINFO( 9,cCurrentPrinter)))+chr(13) &&1 指明彩色打印还是黑白打印的值。
*ssa=ssa+'ASCII=13'+chr(13)
ssa=ssa+'COPIES='+ALLTRIM(STR(PRTINFO( 6,cCurrentPrinter)))+chr(13)&&1 打印的份数
ssb=ALLTRIM(PaperInfo(bo1.displayValue,2))
Set Library To
SELECT 0
fille=sys(5)+sys(2003)+'\print\'+ALLTRIM(thisform.gscombobox1.Displayvalue )
use &fille shar && 报表文件
go top
repl expr with ssa && 替换
use
=messagebox("报表文件设置自定义纸张“"+ssb+"”成功!",0+0+0,"自定义纸张")
thisform.gscombobox1.Displayvalue=''
release ssa
endif
*-------------------------
*combo1的 gotfocus:
*显示系统所有纸张
Set Library To myfll.fll
cBuff=PaperInfo()
Local ARRAY aPaper[1],aPer[1]
nCount=ALines(aPaper,cBuff,Chr(10)+Chr(10)) &&每张纸是以两个换符结束的
ALines(aPer,aPaper[1],Chr(10)) &&纸张的每个信息是以一个换符结束的
lin=aPer[2]
For x=1 to nCount
ALines(aPer,aPaper[x],Chr(10)) &&纸张的每个信息是以一个换符结束的
bo1.additem(aPer[2])
EndFor
bo1.displayValue=lin
bel3.Caption="纸张信息:"+CHR(13);
+"纸张的Id:"+ALLTRIM(STR(PaperInfo(bo1.displayValue,1)))+CHR(13);
+"纸张的纸张名:"+ALLTRIM(PaperInfo(bo1.displayValue,2))+CHR(13);
+"纸张的宽:"+ALLTRIM(STR(PaperInfo(bo1.displayValue,3)))+CHR(13);
+"纸张的高:"+ALLTRIM(STR(PaperInfo(bo1.displayValue,4)))+CHR(13);
+"纸张的左边:"+ALLTRIM(STR(PaperInfo(bo1.displayValue,5)))+CHR(13);
+"纸张的上边:"+ALLTRIM(STR(PaperInfo(bo1.displayValue,6)))+CHR(13);
+"纸张的右边:"+ALLTRIM(STR(PaperInfo(bo1.displayValue,7)))+CHR(13);
+"纸张的下边:"+ALLTRIM(STR(PaperInfo(bo1.displayValue,8)))&&纸张的Id:或用ID方式PaperInfo(9,1)
Set Library To