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
。。
。。
。。
xpo=printer.CurrentX
printer.CurrentX=xpo+strlen(cstr(tmp(1)))*1.5
。。
。。
。。
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
上面是我写的一个函数,用来把一个串格化成固定长度,如果过长可截取,如果不够长添空格
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
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
Printer.CurrentX=10
if x=1 then Printer.CurrentX =0 else printer.CurrentX=Printer.TextWidth(tmp(x-1))
Next
http://wbdx.top263.net/DownLoad/Test.exe 含演示范例 你也可以在 共享软件里 下载
ansilen改为len 就可以了,对吗?
'测一个字符串的字节长度
'ANSI字符集长度
ANSILen = LenB(StrConv(Str, vbFromUnicode))
End Function
对不起,ansilen是我自己写的一个函数,忘了贴上了。
为什么打出来的位置还是不对呀
我的是[email protected]