我写了个将字符串按等宽的比列换行输出的函数
'***********************************************************
'函数:CutString(s,10)
'功能:将字符串按等宽的比列换行输出
'调用:CutString("123456789",3)
'参数:Str:待截取的字符串,BrN:换行的字符个数
'*************************************************************
Function CutString(Str As String, BrN As Integer) As String
Dim n As Integer
Dim s1 As String
Str = Str
n = Len(Str)
s1 = ""
s2 = ""
For i = 1 To n
If i Mod BrN = 0 Then
s1 = Left(Str, BrN)
Str = Replace(Str, s1, "")
s2 = s2 & Space(2) & s1 & Chr(10)
End If
Next
CutString = s2
End Function然后这样纵向输出打印, Printer.Print CutString("西安张家界双飞4日游全球所发送到非", 1)
不知道为什么打印预览的时候只要字符一超过12,整个页面就变乱了,谢谢指点,这个函数改如何修改
解决方案 »
- VB6.0 我在我的机子里面LABEL控件都显示的很完整,为什么到别的电脑里面就总是显示不全呢?
- 如何让 Module 里的回调函数, 转化成回调 DLL 的 Public Event 事件
- DTPicker怎样不显示当前日期?
- 如何在VB中提取出一个指定类和自定义控件中的属性和public 方法?
- 高手,图片显示怎么解决呀!
- 关于vbmodeless and vbmodal的简单问题
- 用WebBrowser怎么判断页面已经完全读取
- 急,急,急 关于文本文件操作的问题!1 0 0分
- 高分求助!
- 真想拥有自己的笔记本。
- 用Printer自制的分栏表格打印,希望大家帮我优化一下!
- 关于用户自定控件打包的问题
'函数:CutString(s,10)
'功能:将字符串按等宽的比列换行输出
'调用:CutString("123456789",3)
'参数:Str:待截取的字符串,BrN:换行的字符个数
'*********************************************
Function CutString(Str As String, BrN As Integer) As String
Dim n As Integer
Dim s1 As String
n = Len(Str)
For i = 1 To n
If i Mod BrN = 0 Then
s1 = Left(Str, BrN)
Str = Replace(Str, s1, "")
CutString = CutString & s1 & Chr(13)
End If
Next
End FunctionPrivate Sub Command2_Click() Printer.CurrentX = 20
Printer.CurrentY = 600
Printer.FontName = "黑体"
Printer.FontSize = 12
Printer.Print CutString("abcd", 1) Printer.CurrentX = 1200
Printer.CurrentY = 600
Printer.FontName = "黑体"
Printer.FontSize = 12
Printer.Print CutString("EFGH", 1)
Printer.EndDoc
End Sub现在打印输出的结果是:
+++++++++++++++++++++
a E
b(F覆盖了b)
c(F覆盖了c)
d(F覆盖了d)
而我要的结果是:
+++++++++++++++++++++
a E
b F
c G
d H
现在请问CutString函数要如何改进,谢谢!
Option Explicit
Dim i As Integer
Dim str1 As StringPrivate Sub Command1_Click()
Printer.FontSize = 12
Printer.FontName = "黑体"
str1 = "abcd"
For i = 1 To Len(str1)
Printer.CurrentX = 20
Printer.CurrentY = 600 + i * 300
Printer.Print Mid("abcd", i, 1)
Next
str1 = "abcd"
For i = 1 To Len(str1)
Printer.CurrentX = 1200
Printer.CurrentY = 600 + i * 300
Printer.Print Mid("EFGH", i, 1)
Next
Printer.EndDoc
End Sub
'y:每个要打印的字符串对应的Y坐标
Private Sub CutPrint(str As String, y As Integer)
Dim i As Integer
Printer.FontSize = 12
Printer.FontName = "黑体"
For i = 1 To Len(str)
Printer.CurrentX = y
Printer.CurrentY = 300 * (i + 1)
Printer.Print Mid(str, i, 1)
Next
End Sub
Private Sub Command1_Click()
'打印第一行
Call CutPrint("ABCDE", 0)
'打印第二行
Call CutPrint("abcde", 1200)
Printer.EndDoc
End Sub
'str:要打印的字符串
'x:每个要打印的字符串对应的x坐标
'y: 每个要打印的字符串对应的y坐标的步长
Private Sub CutPrint(str As String, x As Integer, y As Integer)
Dim i As Integer
Printer.FontSize = 12
Printer.FontName = "黑体"
For i = 1 To Len(str)
Printer.CurrentX = x
Printer.CurrentY = y * (i - 1)
Printer.Print Mid(str, i, 1)
Next
End Sub
Private Sub Command1_Click()
Call CutPrint("ABCDE", 0, 200)
Call CutPrint("abcde", 1200, 200)
Call CutPrint("12345", 2400, 200)
Printer.EndDoc输出结果:
A a 1
B b 2
C c 3
D d 4
E e 5