Do Until RSgcxmaj.EOF  If i > 8 Then
    i = 0
    Printer.NewPage
  End If
  '打印一个横向'打印一个长矩形框
   Printer.DrawWidth = 50
   Printer.Line (576, 1400 + i * 576 * 2.5 + 160 * i)-(11180, 1400 + (i + 1) * 576 * 2.5 + 160 * i), , B    
   
   '打印两条横线
       Printer.DrawWidth = 30
      y = 1440 + i * 576 * 2.5 + 160 * i
      Printer.Line (2880, y)-(2880, y + 2.5 * 576)
      Printer.Line (4000, y)-(4000, y + 2.5 * 576)
     
 '打印案卷题名4字   我要把按卷题名打印在两条横线的中心位置 
      Printer.Print "  "
      hPrintDc = Printer.hdc
      Outstring = "案卷题名"
      lf.lfEscapement = 900
      lf.lfHeight = (DESIREDFONTSIZE * 30) / Printer.TwipsPerPixelY
      lf.lfCharSet = 1
      lf.lfFaceName = "华文中宋" + Chr(0)
      hFont = CreateFontIndirect(lf)
      hOldfont = SelectObject(hPrintDc, hFont)
     
      y = 1200 + i * 576 * 2.4 + 150 * i
      result = TextOut(hPrintDc, 3000, y + 1325, Outstring, LenB(StrConv(Outstring, vbFromUnicode)))   '这个里面的坐标该怎么设置呀!才能每次都使案卷题名打在两条线的当中 
      result = SelectObject(hPrintDc, hOldfont)
      result = DeleteObject(hFont)
   .movenext
   i=I+1
loop

解决方案 »

  1.   

    连横线的坐标清楚的!  Printer.Line   (2880,   y)-(2880,   y   +   2.5   *   576) 
                       Printer.Line   (4000,   y)-(4000,   y   +   2.5   *   576) 
    问题是怎么判断文字的坐标  textout的坐标系好象和printer的坐标系不是同一个坐标系呀,如果我把textout的Yy坐标设置为 
    y=1440+(i+1)*576*2.5+160*i(就是打印横线的y坐标)的话,循环打出来的案卷题名不在两条横线当中呀           
      

  2.   

    修改printer.ScaleMode,使得与TextOut成为同一个坐标系。
      

  3.   

    谢谢楼上,我按照你的说法做了  两个出现的位置完全不用!但是还是找不出什么解决的方法  
    拜托大家了! 我实在想不出什么办法了呀! textout的x,y坐标和printer的坐标的坐标单位不一样! 怎么办呀!老板又催得急! 不要改printer.ScaleMode 不然的话我的打印位置又要重新排列了呀!
      

  4.   

    你先用修改printer.ScaleMode的方式找到textout用的是哪个坐标系,然后恢复printer.ScaleMode,将与line一致的坐标值用printer.scalex、printer.scaley换算成正确的textout坐标值。
      

  5.   

    '假定Printer.ScaleMode=vbTwips,而推测出TextOut所用的ScaleMode=vbPixels
    result = TextOut(hPrintDc, _
            Printer.ScaleX(3000, vbTwips, vbPixels), _
            Printer.ScaleY(y + 1325, vbTwips, vbPixels), _
            Outstring, _
            LenB(StrConv(Outstring, vbFromUnicode)))
      

  6.   

    实在不行,你用WORD做个示意图,标上各种参数,传上来,我给你把整段东西写出来,不过我只会写输出到打印机的
      

  7.   

    谢谢yuhaoxiang! 你能告诉email 我发给你打印格式!谢谢
     我是向打印机输出的! 我也计算过了! 如果textout的坐标设置为(3000.500) (3000,1000)
    ,(3000,1500)  我用直尺量过 每差500就相差2.5公分(具体数字记不得了,就用这个数字代替),
    如果按照这个逻辑,那么(3000,500)这个应该距离纸张的的上顶部为2.5公分,但是我量了一下 远比这个数值小!
    我把格式做了个word文件 请你指点 最好给我写个代码 这个问题我都头大了  
      

  8.   

    谢谢Tiger_Zhao  按你的方法搞定了! 结贴