vb6 打印

来源:互联网 发布:linux 查杀进程 编辑:程序博客网 时间:2024/06/07 11:46

一个简单的问题:如何在VB6里面实现打印功能?使用printer对象
A :
       

       
       
谁能详细一点地告诉我在VB里面怎么实现打印。另:不知道哪位大侠有相关的程序?方便的话请给我发一份让我参考参考,感激不尽!!!我的电子邮箱:dreammaker1234@sohu.com 

--------------------------------------------------------------- 

 

小弟,你找我找对了,给你一段代码,自己仔细研究去吧,包你好用: 

Private  Sub  Image5_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

原创粉丝点击