| 
 | 
 
-  
 
 - *------------------------------------------------------------------------
 
 - * 功 能 获取纸张页边距
 
 - * 运行环境: 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"
 
 
  复制代码 |   
 
 
 
 |