正文

VB编写打印预览程序2005-11-15 00:54:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/0ga0/6961.html

分享到:

可以有很多方法,VB自己提供了设计器。但我更喜欢使用printer对象进行代码控制,下面有部分代码是在一张A4纸张上打印图表的,很早以前写的,乱,希望你能看懂:) 只要你把printer的currentx和currenty转换成思维模型了,就很容易在头脑里建立起一个预览图来了。 Option Explicit Dim mouse_Down          As Boolean Dim mouse_X             As Single Dim mouse_Y             As Single Dim str_X               As Integer Dim str_Y               As Integer Dim out_PRINT           As Boolean Dim moneyHANZI          As String Dim print_BIANHAO       As String Dim print_NAME          As String Dim print_DANWEI        As String Dim print_DANJIA        As Single Dim print_NUM           As Integer Dim print_HEJI          As Single Dim print_MOVE          As Boolean Private Sub chkPrint_Click()     If chkPrint.value = 1 Then         out_PRINT = True         cmdPrintView.Visible = False         cmdPrint.Visible = True     Else         out_PRINT = False         cmdPrintView.Visible = True         cmdPrint.Visible = False     End If End Sub Private Sub cmdClose_Click()     Unload Me End Sub Private Sub cmdPrint_Click()          printOUT      End Sub Private Sub cmdPrintView_Click()     picPrint.Cls     printOUT      End Sub Private Sub Form_Load()     With Me         .Left = 90         .Top = 60     End With     out_PRINT = False     cmdPrintView.Visible = True     cmdPrint.Visible = False     str_X = 850     str_Y = 283     picPrint.Cls     printOUT End Sub Private Sub imgClose_Click()          Unload Me      End Sub Private Sub imgTitle_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)          If Button = 1 Then         If mouse_Down <> True Then             mouse_Down = True             mouse_X = X             mouse_Y = Y             imgTitle.MousePointer = 5         End If     End If \’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’窗体移动代码1:判断是否移动 End Sub Private Sub imgTitle_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)          If mouse_Down = True Then         Me.Left = Me.Left + X - mouse_X         Me.Top = Me.Top + Y - mouse_Y     End If \’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’窗体移动代码2:窗体移动      End Sub Private Sub imgTitle_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)          If mouse_Down <> False Then         mouse_Down = False         imgTitle.MousePointer = 0     End If \’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’窗体移动代码3:鼠标变换默认      End Sub Private Sub labTitle_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)          imgTitle_MouseDown Button, Shift, X, Y     labTitle.MousePointer = 5 \’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’窗体移动代码4:鼠标变换      End Sub Private Sub labTitle_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)          imgTitle_MouseMove Button, Shift, X, Y \’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’调用函数执行窗体移动      End Sub Private Sub labTitle_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)          imgTitle_MouseUp Button, Shift, X, Y     labTitle.MousePointer = 0      End Sub Private Sub printTEST() Dim i As Integer                           With picTEST                      .CurrentX = 1900             .CurrentY = 310             .Font = "黑体"             .FontSize = 15             .FontBold = False             picTEST.Print "  中翔医院管理系统       药  品  清  单"             .Font = "宋体"             .FontSize = 9             .CurrentX = 7300             .CurrentY = .CurrentY + 100             picTEST.Print "时    间:  " & getTime \’            .CurrentX = 1900             .CurrentY = .CurrentY + 50             picTEST.Line (850, .CurrentY)-(9870, .CurrentY)             .CurrentX = 1200             .CurrentY = .CurrentY + 150             picTEST.Print "药品编号";             .CurrentX = 2700             picTEST.Print "药品名称";             .CurrentX = 4200             picTEST.Print "单    位";             .CurrentX = 5700             picTEST.Print "单    价";             .CurrentX = 7200             picTEST.Print "数    量";             .CurrentX = 8700             picTEST.Print "合计(元)"             .CurrentY = .CurrentY + 50                                                                 If frmYaoPinMain.gridYaoPin.Rows > 1 Then             For i = 1 To frmYaoPinMain.gridYaoPin.Rows - 1                                       Sql = "SELECT * FROM yaocontrol where bianhao like \’" & frmYaoPinMain.gridYaoPin.TextMatrix(i, 0) & "\’"             Set Rs = Conn.execute(Sql)             If Not (Rs.EOF And Rs.bof) Then                                                                            If .CurrentY >= 5600 Then                             picTEST.Height = (Int(.CurrentY / 5667) + 1) * 5667                         Else                             picTEST.Height = 5667                         End If                                                                           print_BIANHAO = Trim(Rs("bianhao"))                         print_NAME = Trim(Rs("name"))                         print_DANWEI = Trim(Rs("danwei"))                         print_DANJIA = Rs("danjia")                         print_NUM = Rs("shuliang")                         print_HEJI = print_DANJIA * print_NUM                                                                           .CurrentX = 1200                         .CurrentY = .CurrentY + 150                         picTEST.Print print_BIANHAO;                         .CurrentX = 2700                         picTEST.Print print_NAME;                         .CurrentX = 4200                         picTEST.Print print_DANWEI;                         .CurrentX = 5700                         picTEST.Print Format(print_DANJIA, "0.000");                         .CurrentX = 7200                         picTEST.Print print_NUM;                         .CurrentX = 8700                         picTEST.Print Format(print_HEJI, "0.000")                                                                                            End If             Next         End If     End With End Sub Private Sub printOUT()     Dim i As Integer     Dim j As Integer     Dim rootRs     On Error Resume Next     printTEST     picPrint.Height = picTEST.Height     If picPrint.Height > 5667 Then         picUP.Visible = True         picDOWN.Visible = True     End If                  If out_PRINT = False Then              With picPrint                      .CurrentX = 1900             .CurrentY = 310             .Font = "黑体"             .FontSize = 15             .FontBold = False             picPrint.Print "  中翔医院管理系统       药  品  清  单"             .Font = "宋体"             .FontSize = 9             .CurrentX = 7300             .CurrentY = .CurrentY + 100             picPrint.Print "时    间:  " & getTime \’            .CurrentX = 1900             .CurrentY = .CurrentY + 50             picPrint.Line (850, .CurrentY)-(9870, .CurrentY)             .CurrentX = 1200             .CurrentY = .CurrentY + 150             picPrint.Print "药品编号";             .CurrentX = 2500             picPrint.Print "药品名称";             .CurrentX = 5200             picPrint.Print "单  位";             .CurrentX = 6400             picPrint.Print "单  价";             .CurrentX = 7600             picPrint.Print "数  量";             .CurrentX = 8900             picPrint.Print "合计(元)"             .CurrentY = .CurrentY + 50                                                                 If frmYaoPinMain.gridYaoPin.Rows > 1 Then             For i = 1 To frmYaoPinMain.gridYaoPin.Rows - 1                                       Sql = "SELECT * FROM yaocontrol where bianhao like \’" & frmYaoPinMain.gridYaoPin.TextMatrix(i, 0) & "\’"             Set Rs = Conn.execute(Sql)             If Not (Rs.EOF And Rs.bof) Then                                                                            If .CurrentY >= 5600 Then                             picTEST.Height = (Int(.CurrentY / 5667) + 1) * 5667                         Else                             picTEST.Height = 5667                         End If                                                                           print_BIANHAO = Trim(Rs("bianhao"))                         print_NAME = Trim(Rs("name"))                         print_DANWEI = Trim(Rs("danwei"))                         print_DANJIA = Rs("danjia")                         print_NUM = Rs("shuliang")                         print_HEJI = print_DANJIA * print_NUM                                                                           .CurrentX = 1200                         .CurrentY = .CurrentY + 150                         picPrint.Print print_BIANHAO;                         .CurrentX = 2500                         picPrint.Print print_NAME;                         .CurrentX = 5400                         picPrint.Print print_DANWEI;                         .CurrentX = 6500                         picPrint.Print Format(print_DANJIA, "0.000");                         .CurrentX = 7700                         picPrint.Print print_NUM;                         .CurrentX = 8900                         picPrint.Print Format(print_HEJI, "0.000")                                                                                            End If             Next                 End If         End With          ElseIf out_PRINT = True Then               With Printer                      .CurrentX = 1900             .CurrentY = 310             .Font = "黑体"             .FontSize = 15             .FontBold = False             Printer.Print "  中翔医院管理系统       药  品  清  单"             .Font = "宋体"             .FontSize = 9             .CurrentX = 7300             .CurrentY = .CurrentY + 100             Printer.Print "时    间:  " & getTime \’            .CurrentX = 1900             .CurrentY = .CurrentY + 50             Printer.Line (850, .CurrentY)-(9870, .CurrentY)             .CurrentX = 1200             .CurrentY = .CurrentY + 150             Printer.Print "药品编号";             .CurrentX = 2500             Printer.Print "药品名称";             .CurrentX = 5200             Printer.Print "单    位";             .CurrentX = 6400             Printer.Print "单    价";             .CurrentX = 7600             Printer.Print "数    量";             .CurrentX = 8900             Printer.Print "合计(元)"             .CurrentY = .CurrentY + 50                                                                 If frmYaoPinMain.gridYaoPin.Rows > 1 Then             For i = 1 To frmYaoPinMain.gridYaoPin.Rows - 1                                       Sql = "SELECT * FROM yaocontrol where bianhao like \’" & frmYaoPinMain.gridYaoPin.TextMatrix(i, 0) & "\’"             Set Rs = Conn.execute(Sql)             If Not (Rs.EOF And Rs.bof) Then                                                                            If .CurrentY >= 5600 Then                             picTEST.Height = (Int(.CurrentY / 5667) + 1) * 5667                         Else                             picTEST.Height = 5667                         End If                                                                           print_BIANHAO = Trim(Rs("bianhao"))                         print_NAME = Trim(Rs("name"))                         print_DANWEI = Trim(Rs("danwei"))                         print_DANJIA = Rs("danjia")                         print_NUM = Rs("shuliang")                         print_HEJI = print_DANJIA * print_NUM                                                                           .CurrentX = 1200                         .CurrentY = .CurrentY + 150                         Printer.Print print_BIANHAO;                         .CurrentX = 2500                         Printer.Print print_NAME;                         .CurrentX = 5400                         Printer.Print print_DANWEI;                         .CurrentX = 6500                         Printer.Print Format(print_DANJIA, "0.000");                         .CurrentX = 7700                         Printer.Print print_NUM;                         .CurrentX = 8900                         Printer.Print Format(print_HEJI, "0.000")                                                                                            End If             Next                 End If             Printer.Line (850, picTEST.Height)-(852, picTEST.Height)             Printer.EndDoc             If Err <> 0 Then                 If Err = 482 Then                     Rs.Close                     err_NUM = 27                     ErrMSG err_NUM, 1                     Exit Sub                 Else                     Rs.Close                     err_NUM = 26                     ErrMSG err_NUM, 1                     Exit Sub                 End If             End If         End With     End If End Sub Function getHANZI(ByVal str As String)     Select Case str         Case "0"             getHANZI = "零"         Case "1"             getHANZI = "壹"         Case "2"             getHANZI = "贰"         Case "3"             getHANZI = "叁"         Case "4"             getHANZI = "肆"         Case "5"             getHANZI = "伍"         Case "6"             getHANZI = "陆"         Case "7"             getHANZI = "柒"         Case "8"             getHANZI = "捌"         Case "9"             getHANZI = "玖"         Case "\\"             getHANZI = "\"     End Select End Function Private Function numToHanZi(ByVal str As String)     Dim leftnum     As Integer     Dim leftstr     As String     Dim rightstr    As String     Dim strall      As String     Dim i As Integer     str = Left(str, Len(str) - 1)     leftnum = InStr(str, ".") - 1     leftstr = Left(str, leftnum)     rightstr = Right(str, 2)     If Len(leftstr) > 5 Then         numToHanZi = "金额超过十万"         Exit Function     End If     For i = leftnum To 4         leftstr = "\\" & leftstr     Next     strall = leftstr & rightstr     Debug.Print strall     numToHanZi = getHANZI(Left(strall, 1)) & "万 " & getHANZI(Mid(strall, 2, 1)) & "千 " & getHANZI(Mid(strall, 3, 1)) & "百 " & getHANZI(Mid(strall, 4, 1)) & "十 " & getHANZI(Mid(strall, 5, 1)) & "元 " & getHANZI(Mid(strall, 6, 1)) & "角 " & getHANZI(Right(strall, 1)) & "分"      End Function Private Sub picDOWN_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)          If Button = 1 Then     print_MOVE = True     Do Until (picMAP.Height) - (picPrint.Top + picPrint.Height) >= 240         picPrint.Top = picPrint.Top - 10         If print_MOVE = False Then Exit Sub         DoEvents         If print_MOVE = False Then Exit Sub     Loop     End If      End Sub Private Sub picDOWN_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)     print_MOVE = False End Sub Private Sub picUP_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)     If Button = 1 Then     print_MOVE = True     Do Until picPrint.Top >= 240         picPrint.Top = picPrint.Top + 10         If print_MOVE = False Then Exit Sub         DoEvents         If print_MOVE = False Then Exit Sub     Loop     End If End Sub Private Sub picUP_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)     print_MOVE = False End Sub

阅读(35) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册