VB中打印多行文本框的内容时,如何控制每行在纸上的位置?送20分
我用Prnt(x,y)的方法打印多行的文本框,可是只有第一行是按(x,y)的位置打印出来的,后面的行都是从最左边打印的。如何让后面的行按第一行的X值打印出来?我是新手,忘...
我用Prnt(x,y)的方法打印多行的文本框,可是只有第一行是按(x,y)的位置打印出来的,后面的行都是从最左边打印的。如何让后面的行按第一行的X值打印出来?我是新手,忘高手能写详细些
可能我没说明白,我把代码发上来。
Option Explicit
Dim x As Integer
Dim y As Integer
Dim fnt As Byte
Dim txt As String
Dim dd As Variant
Public Function prnt(x As Variant, y As Variant, fnt As Variant, txt As Variant)
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontSize = fnt
Printer.Print txt
End Function
Private Sub Command1_Click()
Printer.ScaleMode = 6
fnt = 14
x = 56
y = 59
txt = Text1
dd = prnt(x, y, fnt, txt)
Printer.EndDoc
End Sub
Text1 就是多行文字的文本,不是打印到文本框,是从文本框打印到A4纸上,打印时,只有第一行是按(x,y)的坐标打的,从第二行向后都是打印到纸的最左面,如何让后面的行,也按(X,Y)坐标打?qqchildren 朋友说的对,就是要空出打印到纸上的左边距,可是tab(i):我不知道怎么加才对。谢谢两位的回答,麻烦高手们再帮忙给看看。 展开
可能我没说明白,我把代码发上来。
Option Explicit
Dim x As Integer
Dim y As Integer
Dim fnt As Byte
Dim txt As String
Dim dd As Variant
Public Function prnt(x As Variant, y As Variant, fnt As Variant, txt As Variant)
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontSize = fnt
Printer.Print txt
End Function
Private Sub Command1_Click()
Printer.ScaleMode = 6
fnt = 14
x = 56
y = 59
txt = Text1
dd = prnt(x, y, fnt, txt)
Printer.EndDoc
End Sub
Text1 就是多行文字的文本,不是打印到文本框,是从文本框打印到A4纸上,打印时,只有第一行是按(x,y)的坐标打的,从第二行向后都是打印到纸的最左面,如何让后面的行,也按(X,Y)坐标打?qqchildren 朋友说的对,就是要空出打印到纸上的左边距,可是tab(i):我不知道怎么加才对。谢谢两位的回答,麻烦高手们再帮忙给看看。 展开
2个回答
展开全部
你要打印到文本框中?不知道你说的 prnt(x,y)是不是你定义的一个函数,vb里应该没有这个方法的,如果你要按自己的格式打印到文本框 text1中,可按下面代码打印的方法做你的东西。
Private Sub Command1_Click()
Text1.Text = "我" & Space(5) & "和你" & vbCrLf ‘第一行,在“我”后面空5个字符,然后打印"和你",然后结束第一行。
Text1.Text = Text1.Text + Space(3) + "2323" '第二行,空3个字符打印2323"
End Sub
哦,这次说清楚了,你只打印了text1的内容,而打印的位置就设置了一次,当然第二行还是按照text1中的格式还在最备辩中左边了,呵呵,你按下面的代码打印就行了。
Private Sub Command1_Click() 'command1中代码,你的其他代码不变
Printer.ScaleMode = 6
Dim shuzu As Variant
shuzu = Split(Text1.Text, vbCrLf) '把多行文本按回车换行分成n个数组
Dim i As Integer
For i = 0 To UBound(shuzu)
fnt = 14
x = 56: y = 59
'y为行与行之间的间灶州隔,单位你要注意点,查查仿山相关资料,我不多说了
dd = prnt(x, y * (i + 1), fnt, shuzu(i)) '把多行文本按行打印
Next i
Printer.EndDoc
End Sub
经调试通过。
Private Sub Command1_Click()
Text1.Text = "我" & Space(5) & "和你" & vbCrLf ‘第一行,在“我”后面空5个字符,然后打印"和你",然后结束第一行。
Text1.Text = Text1.Text + Space(3) + "2323" '第二行,空3个字符打印2323"
End Sub
哦,这次说清楚了,你只打印了text1的内容,而打印的位置就设置了一次,当然第二行还是按照text1中的格式还在最备辩中左边了,呵呵,你按下面的代码打印就行了。
Private Sub Command1_Click() 'command1中代码,你的其他代码不变
Printer.ScaleMode = 6
Dim shuzu As Variant
shuzu = Split(Text1.Text, vbCrLf) '把多行文本按回车换行分成n个数组
Dim i As Integer
For i = 0 To UBound(shuzu)
fnt = 14
x = 56: y = 59
'y为行与行之间的间灶州隔,单位你要注意点,查查仿山相关资料,我不多说了
dd = prnt(x, y * (i + 1), fnt, shuzu(i)) '把多行文本按行打印
Next i
Printer.EndDoc
End Sub
经调试通过。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询