获取纸张页边距
*------------------------------------------------------------------------
* 功 能 获取纸张页边距
* 运行环境: Microsoft Visual FoxPro 9.0
* 日 期: yxgzs于2005年6月
* 阿杰整理收集于:2010年8月10日
*------------------------------------------------------------------------
If Sys(1037)="0"
Return
Endif
Clear
Local lcSelect, lcFrx, lcDriver, lcDevice, lcDEVMODE
m.lcSelect=Select()
m.lcFrx=Sys(2023)+"\"+Sys(3)
Create Cursor lcCursor (EmpID N(1))
Create Report (m.lcFrx+".FRX") From Dbf() Fields (Field(1))
Use (m.lcFrx+".FRX") Exclusive
*!* 如果是VFP9以前版本或报表设置为保存打印机环境,以下两句不要
Replace Expr With "",Tag With "",TAG2 With ""
=Sys(1037,2)
m.lcDriver = Substr(Mline(Expr,Atline("DRIVER",Expr)),8)
m.lcDevice = Substr(Mline(Expr,Atline("DEVICE",Expr)),8)
m.lcDEVMODE=TAG2
Use
Select (m.lcSelect)
Delete File (m.lcFrx+".*")
Declare Integer CreateIC ;
in gdi32 ;
string lpszDriver, ;
string lpszDevice, ;
string lpszOutput, ;
string lpdvmInit
Declare Integer GetDeviceCaps ;
in gdi32 ;
integer hdc, ;
integer nIndex
Declare Integer DeleteDC ;
in gdi32 ;
integer hdc
Try
Local iHDC
m.iHDC = CreateIC( m.lcDriver, m.lcDevice, Chr(0), m.lcDEVMODE )
If m.iHDC = 0
?"获取纸张信息失败"
Else
m.PrintableX = GetDeviceCaps( m.iHDC, 8 )
m.PrintableY = GetDeviceCaps( m.iHDC, 10 )
m.dpiX = GetDeviceCaps( m.iHDC, 88 )
m.dpiY = GetDeviceCaps( m.iHDC, 90 )
m.OffsetX = GetDeviceCaps( m.iHDC, 112 )
m.OffsetY = GetDeviceCaps( m.iHDC, 113 )
m.ActualX = GetDeviceCaps( m.iHDC, 110 )
m.ActualY = GetDeviceCaps( m.iHDC, 111 )
?"打印机 "+Left(m.lcDEVMODE,At(Chr(0),m.lcDEVMODE)-1)
m.lcFrx=Substr(m.lcDEVMODE,71,40)
?"纸张名 "+Left(m.lcFrx,At(Chr(0),m.lcFrx)-1)
?"纸纸宽 = "
??Round(m.ActualX*25.4/m.dpiX,1)
?"纸纸高 ="
??Round(m.ActualY*25.4/m.dpiY,1)
?"上边距 ="
??Iif(m.OffsetY>0,Round(m.OffsetY*25.4/m.dpiY+0.05,1),0.0)
?"下边距 ="
??Iif(m.ActualY-m.PrintableY-m.OffsetY=0,0.0,Round((m.ActualY-m.PrintableY-m.OffsetY)*25.4/m.dpiY+0.05,1))
?"左边距 ="
??Iif(m.OffsetX>0,Round(m.OffsetX*25.4/m.dpiX+0.05,1),0.0)
?"右边距 ="
??Iif(m.ActualX-m.PrintableX-m.OffsetX=0,0.0,Round((m.ActualX-m.PrintableX-m.OffsetX)*25.4/m.dpiX+0.05,1))
Endif
Catch
Endtry
Clear Dlls "GetDeviceCaps","DeleteDC"
页:
[1]