⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printerpro.bas

📁 一个用VB6.0开发的简单餐会管理系统。在WIN2K
💻 BAS
字号:
Attribute VB_Name = "PrinterPro"
''''''''''''''''''''
''打印表格

Public Const JP_PRINT_EVERYPAGE = 30            ''每页行数
Public Const JP_PRINT_SPOSX = 800               ''表格开始的X坐标
Public Const JP_PRINT_SPOSY = 1400              ''表格开始的Y坐标
Public Const JP_PRINT_LINEOFFX = 30             ''格子线离字的距离
Public Const JP_PRINT_LINEOFFY = 30
Public Const JP_PRINT_ROWHEIGTH = 240           ''格子的行高

Public Const JP_PRINT_COLUMNFONT = 8            ''列表名称字体大小
Public Const JP_PRINT_CONTECTFONT = 8           ''列表内容字体大小

Public Const JP_PRINT_TITLEFONT = 18            ''标题字体大小
Public Const JP_PRINT_TITLEPOSX = 6000          ''标题的X坐标
Public Const JP_PRINT_TITLEPOSY = 700           ''标题的Y坐标


''''''''''''''''''''
''''''打印机结构
Type typePrinterData
    Title As String                         '标题
'    TitlePosX As Integer                    '标题坐标X
'    TitlePosY As Integer                    '标题坐标Y
'    TitleFontSize As Integer                '标题字体
    Cols As Integer                         'COLS数量
End Type


Public prntValue As typePrinterData
Public Function prnt1(x As Integer, y As Integer, font As Single, txt As String, Optional fb As Boolean = False)

Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontBold = fb
Printer.FontSize = font
Printer.Print txt

End Function


'''''''''''''''''''''
Public Function SetPrinterValue(flag As Integer)

Select Case flag
    Case JP_TX_ITEM1:
        prntValue.Title = "预订生日信息"
        prntValue.Cols = JP_YDSTR_COLS - 1
    Case JP_TX_ITEM2:
        prntValue.Title = "最近生日信息"
        prntValue.Cols = JP_ZJSRSTR_COLS - 1
    Case JP_TX_ITEM3:
        prntValue.Title = "基本资料信息"
        prntValue.Cols = JP_SET_MBVIEW_COLS - 1
    Case JP_TX_ITEM4:
        prntValue.Title = "完成生日信息"
        prntValue.Cols = JP_SET_MFVIEW_COLS - 1
End Select

End Function


Public Function PrinterYD(msfg As MSFlexGrid, flag As Integer, nCount As Integer)
Dim fnt As Single
Dim pp As Integer

'PrinterDialog.Show
'WaitDelay (1)

pp = 0
Dim stry, strx, strx1, stry1, linw, page1, p, offx, offy As Integer
'Dim a(10) As Integer

SetPrinterValue (flag)

ReDim a(prntValue.Cols) As Integer
kan = 0
For i = 0 To prntValue.Cols
a(i) = msfg.ColWidth(i)
kan = kan + a(i)
Next

'JP_PRINT_EVERYPAGE = 25              '每页行数
strx = JP_PRINT_SPOSX               'X轴开始坐标
strx1 = JP_PRINT_SPOSX              'X轴开始坐标
stry = JP_PRINT_SPOSY               'Y轴开始坐标
stry1 = JP_PRINT_SPOSY              'Y轴开始坐标
linw = JP_PRINT_ROWHEIGTH           '每行高度
fnt = JP_PRINT_CONTECTFONT          '文本字体
offx = JP_PRINT_LINEOFFX            'OFFSITX
offy = JP_PRINT_LINEOFFY
Printer.FontName = "宋体"
Printer.PaperSize = vbPRPSA4
Printer.Orientation = vbPRORLandscape


'''''''''''''''
''标题
dd = prnt1(JP_PRINT_TITLEPOSX, JP_PRINT_TITLEPOSY, JP_PRINT_TITLEFONT, prntValue.Title)          '标题设置

''''''''''''''''''''''''''
'''内容开始
Printer.Line (strx - offx, stry - offy)-(strx + kan - offx, stry - offy)
msfg = PrinterColumn(msfg, CInt(kan), a)
stry = stry + linw

If nCount > 0 Then
    For j = 1 To nCount    '''''''
        msfg.Row = j
        strx = strx1
        Printer.Line (strx - offx, stry - offy)-(strx + kan - offx, stry - offy)
        p = p + 1                       '第p行
        
        '写一行
        For i = 0 To prntValue.Cols
            msfg.Col = i
            dd = prnt1(CInt(strx), CInt(stry), fnt, msfg.text)
            
            strx = strx + a(i)
        Next
        
        '是否到达一页总行数
        If p > JP_PRINT_EVERYPAGE - 1 Then
            '超过一页
            p = 0
            strx = strx1
            Printer.Line (strx - offx, stry + linw)-(strx + kan - offx, stry + linw - offy)
            
            
            ''''''划竖线
            stry = stry1
            For n = 0 To prntValue.Cols
                Printer.Line (strx - offx, stry - offy)-(strx - offx, stry + (JP_PRINT_EVERYPAGE + 1) * linw - offy)
                strx = strx + a(n)
            Next
            Printer.Line (strx - offx, stry - offy)-(strx - offx, stry + (JP_PRINT_EVERYPAGE + 1) * linw - offy)
            
            pp = pp + 1
            foot$ = "第 " + CStr(pp) + " 页"
            dd = prnt1(strx - offx - 1000, stry + (JP_PRINT_EVERYPAGE + 1) * linw + 100, 10, foot$)
            
            '新一页
            Printer.NewPage
            '''''标题
            dd = prnt1(JP_PRINT_TITLEPOSX, JP_PRINT_TITLEPOSY, JP_PRINT_TITLEFONT, prntValue.Title)
            msfg = PrinterColumn(msfg, CInt(kan), a)
'            p = p + 1
            stry = stry + linw
     '       j = j - 1
        Else
            '换行
            stry = stry + linw
        End If
    Next
End If

'在剩余页印划空行
'st = stry
If p < JP_PRINT_EVERYPAGE Then
    For o = p To JP_PRINT_EVERYPAGE
        strx = strx1
        Printer.Line (strx - offx, stry - offy)-(strx + kan - offx, stry - offy)
        stry = stry + linw
    Next
End If
'Printer.Line (strx - offx, stry - offy)-(strx + kan - offx, stry - offy)

strx = strx1
stry = stry1
'''''''''''''''
''划竖线
For n = 0 To prntValue.Cols
    Printer.Line (strx - offx, stry - offy)-(strx - offx, stry + (JP_PRINT_EVERYPAGE + 1) * linw - offy)
    strx = strx + a(n)
Next

Printer.Line (strx - offx, stry - offy)-(strx - offx, stry + (JP_PRINT_EVERYPAGE + 1) * linw - offy)

pp = pp + 1


foot$ = "第 " + CStr(pp) + " 页"
dd = prnt1(strx - offx - 1000, stry + (JP_PRINT_EVERYPAGE + 1) * linw + 100, 10, foot$)

If flag = JP_TX_ITEM4 Then
    PrintTxitem4Text JP_PRINT_SPOSX, stry + (JP_PRINT_EVERYPAGE + 1) * linw + 100, JP_PRINT_COLUMNFONT, ReportView.Label1.Caption
    
End If


Printer.EndDoc
PrinterYD = msfg
'PrinterDialog.Caption = "打印完成!"
'Unload PrinterDialog
End Function


''''''''''''''''''''''
''''打印栏目
Public Function PrinterColumn(msfg As MSFlexGrid, kan As Integer, a() As Integer)
msfg.Row = 0
Dim strx, stry, offx, offy As Integer

strx = JP_PRINT_SPOSX               'X轴开始坐标
stry = JP_PRINT_SPOSY               'Y轴开始坐标
offx = JP_PRINT_LINEOFFY            'OFFSITX
offy = JP_PRINT_LINEOFFY

Printer.Line (strx - offx, stry - offy)-(strx + kan - offx, stry - offy)

'写一行
For i = 0 To prntValue.Cols
    msfg.Col = i
    dd = prnt1(CInt(strx), CInt(stry), JP_PRINT_COLUMNFONT, msfg.text, True)
    strx = strx + a(i)
Next

PrinterColumn = msfg
End Function


'''''''''''''''''''''''''
''''''''打印JP_TX_ITEM4的统计文本
Public Function PrintTxitem4Text(x As Integer, y As Integer, font As Integer, text As String)
    Dim n As Long
    Dim str As String
    
    n = InStr(1, text, Chr(10))
    If n = 0 Or n = Null Then
        prnt1 x, y, CInt(font), text
    Else
        str = Left$(text, n)
        prnt1 x, y, CInt(font), str
        text = Mid$(text, n + 1)
        y = y + JP_PRINT_ROWHEIGTH
        PrintTxitem4Text x, y, font, text
    End If
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -