printer.CurrentX=xpo+strlen(cstr(tmp(0)))*1.5 (或其他2.0,3.0等根据情况!)
xpo=printer.CurrentX
printer.CurrentX=xpo+strlen(cstr(tmp(1)))*1.5
。。
。。
。。

解决方案 »

  1.   

    Public Function FormatChar(fChar As String, lLength As Long, Optional Flag As Long = 0) As String
        On Error Resume Next
        FormatChar = fChar
        If AnsiLen(FormatChar) < lLength Then
            If Flag = 0 Then
                FormatChar = FormatChar & Space(lLength - AnsiLen(fChar))
            Else
                FormatChar = Space(lLength - AnsiLen(fChar)) & FormatChar
            End If
        End If
        '如果大于希望长度,则截取
        Do While AnsiLen(FormatChar) > lLength
            FormatChar = Left(FormatChar, Len(FormatChar) - 1)
        Loop
    End Function
    上面是我写的一个函数,用来把一个串格化成固定长度,如果过长可截取,如果不够长添空格
      

  2.   

    用Printer.TextWidth(rs.Fields("..."))檢查實際占用寬度
      

  3.   

    Const TOP_MARGIN = 1440
      

  4.   

     sorry ,刚才没写完,一不小心点到“回复”按钮上了 :)
    Printer.CurrentY = TOP_MARGIN
    Do While Not rs.EOF
    Printer.CurrentX = 1.5
    tmp(0) = rs.Fields("日期")
    tmp(1) = rs.Fields("规格")
    tmp(2) = rs.Fields("页数")
    tmp(3) = rs.Fields("面积合计")
    tmp(4) = rs.Fields("面积累计")
    tmp(5) = rs.Fields("天数")
    tmp(6) = rs.Fields("日租金")
    tmp(7) = rs.Fields("金额合计")
    Printer.Print tmp(0), tmp(1), tmp(2), tmp(3), tmp(4), tmp(5), tmp(6), tmp(7)
    rs.MoveNext
    Row = Row + 1
    Loop
    Printer.EndDoc
      

  5.   

    我给你几个小函数试试,好用记的给分。
    Sub rpm(r, t, con As String)
        Printer.CurrentX = r - Printer.TextWidth(con$)
        Printer.CurrentY = t
        Printer.Print con$
    End Sub
    Sub ppm(l, r, t, con$)
        Printer.CurrentX = l + (r - l - Printer.TextWidth(con$)) \ 2
        Printer.CurrentY = t
        Printer.Print con$
    End SubSub textout(x, Y, con As String)
        Printer.CurrentX = x
        Printer.CurrentY = Y
        Printer.Print con
    End Sub
      

  6.   

    For X = 1 To ubound(tmp())
    Printer.CurrentX=10
           if x=1 then Printer.CurrentX =0 else printer.CurrentX=Printer.TextWidth(tmp(x-1))

    Next
      

  7.   

    你可看看这个
    http://wbdx.top263.net/DownLoad/Test.exe  含演示范例 你也可以在 共享软件里 下载 
      

  8.   

    to 小草,你这还是不可以定义x坐标呀
      

  9.   

    to 小草打印出来的知识把“规格”一项格式化了别的还和原先一样而且你写的好像也有错误
    ansilen改为len 就可以了,对吗?
      

  10.   

    to Netis_Sun(NS)这是什么呀跟本就不行
      

  11.   

    Function ANSILen(ByVal Str As String) As Integer
        '测一个字符串的字节长度
        'ANSI字符集长度
        ANSILen = LenB(StrConv(Str, vbFromUnicode))
        
    End Function
    对不起,ansilen是我自己写的一个函数,忘了贴上了。
      

  12.   

    TO 小草,你看这么写 Printer.Print FormatChar(tmp(0), 4), FormatChar(tmp(1), 4), FormatChar(tmp(2), 2), FormatChar(tmp(3), 3, 4), FormatChar(tmp(4), 2), FormatChar(tmp(5), 2), FormatChar(tmp(6), 2), FormatChar(tmp(7), 2)对吗???
    为什么打出来的位置还是不对呀
      

  13.   

    中间用“&” 不是用“,”
      

  14.   

    谢谢,可以给我留个邮件吗???
    我的是[email protected]   
      

  15.   

    to lou_df(ldf) 我已经解决了