VB里面怎么实现打印功能
VB里面怎么实现打印功能。怎么实现预览,能按要求规格调整样式。怎么样按自己设置的格式打出来
Private Sub cmdCommand1_Click() '打印报表 Dim i As Integer Dim pageleft As Integer Dim pageheader As Integer Dim pagefooter As Integer Dim pageright As Integer Dim startx As Integer Dim starty As Integer Dim startline As Integer Dim endline As Integer Dim usewidth As Integer Dim useheight As Integer pageheader = 25 pagefooter = 25 pageleft = 20 pageright = 20 '定义纸张类型A4 Printer.FontSize = 20 Printer.PaperSize = 9 Printer.ScaleMode = 6 Printer.FontBold = False Printer.ScaleLeft = -20 Printer.ScaleTop = -25 Printer.ScaleWidth = 210 Printer.ScaleHeight = 297 usewidth = Printer.ScaleWidth - 40 useheight = Printer.ScaleHeight - 50 Printer.CurrentX = 0 Printer.CurrentY = 0 Printer.DrawWidth = 2 '打印主标题 Printer.FontSize = 20 Printer.CurrentX = (usewidth - Printer.TextWidth(Me.Text1.Text & "经济情况表 ")) / 2 Printer.CurrentY = Printer.ScaleTop Printer.Print Me.Text1.Text & "经济情况表 " '打印空白行 Printer.FontSize = 8 Printer.CurrentX = (usewidth - Printer.TextWidth(" ")) / 2 Printer.CurrentY = Printer.CurrentY + 1 Printer.Print " " '打印副标题 Printer.FontSize = 15 Printer.CurrentX = (usewidth - Printer.TextWidth(commonth & "月份经济情况报表 ")) / 2 Printer.CurrentY = Printer.CurrentY + 1 Printer.Print commonth & "月份经济情况报表 " '打印空白行 Printer.FontSize = 8 Printer.CurrentX = (usewidth - Printer.TextWidth(" ")) / 2 Printer.CurrentY = Printer.CurrentY + 1 Printer.Print " " '打印表的内容 '首先打印第一条横线 '打印最上边的第一条横线 Printer.CurrentX = pageleft + Printer.ScaleLeft startline = Printer.CurrentY + 1 Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.FontSize = 12 Printer.CurrentY = Printer.CurrentY + 1 starty = Printer.CurrentY Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(" ")) / 2 Printer.Print " " Printer.FontSize = 12 Printer.CurrentX = usewidth / 3 + ((usewidth / 3 - Printer.TextWidth("今年经济情况 ")) / 2) Printer.CurrentY = starty Printer.Print "今年经济情况(万元) " Printer.FontSize = 12 Printer.CurrentX = (usewidth / 3) * 2 + ((usewidth / 3 - Printer.TextWidth("去年经济情况 ")) / 2) Printer.CurrentY = starty Printer.Print "去年经济情况(万元) " Printer.CurrentX = pageleft + Printer.ScaleLeft Printer.CurrentY = Printer.CurrentY + 1 Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.CurrentY = Printer.CurrentY + 1 For i = 0 To 10 '判断是否该页已打满 Me.MSFlexGrid1.Row = i If Printer.CurrentY >= useheight Then '打印横线 Printer.CurrentX = Printer.ScaleLeft + pageleft Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.CurrentY = Printer.CurrentY + 1 '打印四条竖线 endline = Printer.CurrentY Printer.Line (0, startline)-(0, endline) Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline) Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline) Printer.Line (usewidth, startline)-(usewidth, endline) '打印页号 Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleft Printer.CurrentY = useheight + 3 Printer.Print Printer.Page Printer.NewPage 'NewPage告诉打印机,程序对当前输出页的发送已经结束。Printer对像应开始新的一页。 Printer.CurrentX = pageleft + Printer.ScaleLeft Printer.CurrentY = pageheader + Printer.ScaleTop startline = Printer.CurrentY Else '打印一行数据 Me.MSFlexGrid1.Col = 0 Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 8 starty = Printer.CurrentY Printer.Print Me.MSFlexGrid1.Text Me.MSFlexGrid1.Col = 1 Printer.CurrentX = (Printer.ScaleWidth - 40) / 3 + ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 2 Printer.CurrentY = starty Printer.Print Me.MSFlexGrid1.Text Me.MSFlexGrid1.Col = 2 Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3) * 2 + ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 2 Printer.CurrentY = starty Printer.Print Me.MSFlexGrid1.Text Printer.CurrentX = pageleft + Printer.ScaleLeft Printer.CurrentY = Printer.CurrentY + 1 Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.CurrentY = Printer.CurrentY + 1 End If Next i '打印最后一条横线 Printer.CurrentX = Printer.ScaleLeft + pageleft Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) endline = Printer.CurrentY '打印四条竖线 Printer.Line (0, startline)-(0, endline) Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline) Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline) Printer.Line (usewidth, startline)-(usewidth, endline) '打印页号 Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleft Printer.CurrentY = useheight + 3 'Printer.Print Printer.Page Printer.Print " 哈尔滨高新技术开发区 " Printer.EndDoc 'EndDoc告诉VISUAL BASIC,程序创建文档结束。VISUAL BASIC应将它发送到物理打印机上打印。 If Err.Number = 0 Then MsgBox "you are successful! ", , " " End If End Sub
[此贴子已经被作者于2018-4-17 14:25编辑过]