preview3.frm

来自「这个是我以前做的一个客户管理系统.包内已经含有源码和所用到的控件.代码是用VB写」· FRM 代码 · 共 1,949 行 · 第 1/5 页

FRM
1,949
字号
    VsPreview.CurrentX = VsPreview.Marginleft
    VsPreview.TextAlign = taLeftTop
    VsPreview.Text = gLeftTop
    VsPreview.CalcText = gLeftTop
    
    '中标题
    VsPreview.CurrentX = VsPreview.Marginleft + lColWidth / 2 - VsPreview.TextWidth(gMidTop) / 2
    VsPreview.TextAlign = taLeftTop
    VsPreview.Text = gMidTop
    VsPreview.CalcText = gMidTop
    
    '右标题
    VsPreview.CurrentX = VsPreview.Marginleft + lColWidth - VsPreview.TextWidth(gRightTop) - 200
    VsPreview.TextAlign = taLeftTop
    VsPreview.Text = gRightTop
    VsPreview.CalcText = gRightTop
End If
    
    
    '恢复字体信息
    VsPreview.FontName = OldName
    VsPreview.FontUnderline = OldUnder
    VsPreview.FontSize = OldSize
    VsPreview.FontItalic = OldItalic
    VsPreview.FontBold = OldBold
    
    mbSetMuliTitle = True
    Exit Function
    
ErrSetMuliTitle:
    Screen.MousePointer = vbDefault
    mbSetMuliTitle = False
    gShowMsg "设置打印子标题出错 frmPreview.mbSetMuliTitle"

End Function

Private Function mbSetFootTitle() As Boolean
'****************************************************
'设置打印尾注

    Dim OldSize             As Integer
    Dim OldBold             As Boolean
    Dim OldItalic           As Boolean
    Dim OldName         As String
    Dim OldUnder        As Boolean
    Dim i               As Integer
    Dim lColWidth       As Long
    
    On Error GoTo ErrSetFootTitle
    
    '保存字体信息
    OldName = VsPreview.FontName
    OldSize = VsPreview.FontSize
    OldItalic = VsPreview.FontItalic
    OldBold = VsPreview.FontBold
    OldUnder = VsPreview.FontUnderline


    VsPreview.FontName = gFontNameFootTitle
    VsPreview.FontSize = gFontSizeFootTitle
    VsPreview.FontBold = gbFontBoldFootTitle
    VsPreview.FontItalic = gbFontItalicFootTitle
    VsPreview.FontUnderline = gbFontUnderFootTitle

     VsPreview.CurrentY = VsPreview.CurrentY + VsPreview.TextHei * 2
    
    lColWidth = 0
    For i = 1 To gCols
        lColWidth = lColWidth + gColWidth(i)
    Next i
    
    '左下标题
    VsPreview.Text = gLeftBottom
    VsPreview.CalcText = gLeftBottom
    '中下标题
    VsPreview.CalcText = gMidBottom
    VsPreview.CurrentX = VsPreview.Marginleft + lColWidth / 2 - VsPreview.TextWidth(gMidBottom) / 2
    VsPreview.TextAlign = taLeftMiddle
    VsPreview.Text = gMidBottom
    
    
    '右下标题
    VsPreview.CalcText = gRightBottom
    VsPreview.CurrentX = VsPreview.Marginleft + lColWidth - VsPreview.TextWidth(gRightBottom) - 500
    VsPreview.TextAlign = taLeftBottom
    VsPreview.Text = gRightBottom
    
    '右下备注
    
    VsPreview.CalcText = gMemoBottom
    VsPreview.CurrentX = VsPreview.Marginleft
    VsPreview.CurrentY = VsPreview.CurrentY + VsPreview.TextHei + 150
    VsPreview.TextAlign = taLeftBottom
    VsPreview.Text = gMemoBottom

    
    '恢复字体信息
    VsPreview.FontName = OldName
    VsPreview.FontUnderline = OldUnder
    VsPreview.FontSize = OldSize
    VsPreview.FontItalic = OldItalic
    VsPreview.FontBold = OldBold
    
    mbSetFootTitle = True
    Exit Function
    
ErrSetFootTitle:
    Screen.MousePointer = vbDefault
    mbSetFootTitle = False
    gShowMsg "设置打印尾注出错 frmPreview.mbSetFootTitle"

End Function

Private Function mbSetMainTitle() As Boolean

'****************************************************
'设置打印主标题
        
    Dim OldSize             As Integer
    Dim OldBold             As Boolean
    Dim OldItalic           As Boolean
    Dim OldName         As String
    Dim OldUnder        As Boolean
    Dim lColWidth       As Long
    Dim i               As Integer
    
    On Error GoTo ErrSetMainTitle
    
    '保存字体信息
    OldName = VsPreview.FontName
    OldSize = VsPreview.FontSize
    OldItalic = VsPreview.FontItalic
    OldBold = VsPreview.FontBold
    OldUnder = VsPreview.FontUnderline

    '显示主标题
    VsPreview.FontName = gFontNameTitle
    VsPreview.FontSize = gFontSizeTitle
    VsPreview.FontBold = gbFontBoldTitle
    VsPreview.FontItalic = gbFontItalicTitle
    VsPreview.FontUnderline = gbFontUnderTitle

        lColWidth = 0
    For i = 1 To gCols
        lColWidth = lColWidth + gColWidth(i)
    Next i

    VsPreview.CurrentY = VsPreview.MarginTop
    VsPreview.TextAlign = taLeftTop
    VsPreview.CurrentX = VsPreview.Marginleft + lColWidth / 2 - VsPreview.TextWidth(gTitle) / 2
    VsPreview.Text = gTitle
    VsPreview.CalcText = gTitle
    VsPreview.CurrentY = VsPreview.CurrentY + VsPreview.TextHei
    
    If gSubTitle <> "" Then
    '子标题
    VsPreview.CurrentX = VsPreview.Marginleft + lColWidth / 2 - VsPreview.TextWidth(gSubTitle) / 2
    VsPreview.Text = gSubTitle
    VsPreview.CalcText = gSubTitle
    VsPreview.CurrentY = VsPreview.CurrentY + VsPreview.TextHei
    End If
    
    VsPreview.CurrentX = VsPreview.Marginleft
    VsPreview.TextAlign = taLeftTop
    
    
    '恢复字体信息
    VsPreview.FontName = OldName
    VsPreview.FontUnderline = OldUnder
    VsPreview.FontSize = OldSize
    VsPreview.FontItalic = OldItalic
    VsPreview.FontBold = OldBold
    
    mbSetMainTitle = True
    Exit Function
    
ErrSetMainTitle:
    Screen.MousePointer = vbDefault
    mbSetMainTitle = False
    gShowMsg "设置打印主标题出错 frmPreview.mbSetMainTitle"
    
End Function

Private Function mbListVsFlex() As Boolean
'*********************************************
'
'列表VSFLEX内容到打印机
'
'**********************************************
    Dim left            As Double
    Dim X               As Double
    Dim Y1              As Double
    Dim Y               As Double
    Dim iSepLeft        As Double
    Dim iSepTop         As Double
    Dim OutText         As String
    Dim TmpOutText      As String
    Dim strOutText1     As String
    Dim i               As Integer
    Dim iStart          As Integer
    Dim iVBCRLF         As Integer
    Dim iLen            As Integer
    Dim iRows           As Integer
    Dim iRow            As Integer
    Dim iCol            As Integer
    
    On Error GoTo ErrListVsFlex
    
    '********************************************
    '计算字体高度
    
    VsPreview.FontName = gFontNameCon
    VsPreview.FontSize = gFontSizeCon
    VsPreview.FontBold = gbFontBoldCon
    VsPreview.FontUnderline = gbFontUnderCon
    VsPreview.FontItalic = gbFontItalicCon
    
    VsPreview.CalcText = "测试字高"
    gRowHeight = VsPreview.TextHei * 2
    
    
    mbSetNextColumn = True
    
    '线条同字间距离
    iSepLeft = gLeftCon
    iSepTop = gTopCon
    
    left = VsPreview.CurrentX
    mTop = VsPreview.CurrentY
    
    iRows = gvsfItemData.Rows - 1
    
    For iRow = 1 To iRows
        
        If mbNextPage(mTop) Then VsPreview.NewPage
        i = 0
        For iCol = 0 To gvsfItemData.Cols - 1 'gCols - 1
            
            If gvsfItemData.ColHidden(iCol) = False Then
                Call mDrawRect(left, mTop, gColWidth(i + 1), gRowHeight)
                X = left + iSepLeft
                
                '计算该字的长度符串是否超出
                TmpOutText = Trim(gvsfItemData.TextMatrix(iRow, iCol))
            
                iVBCRLF = IIf(IsNull(InStr(1, TmpOutText, vbLf, vbTextCompare)), 0, InStr(1, TmpOutText, vbLf, vbTextCompare))
                If iVBCRLF = 0 Then
                    OutText = TmpOutText
                    VsPreview.CalcText = OutText
                    If VsPreview.TextWid > gColWidth(i + 1) - iSepLeft * 2 Then
                    '若字符串长度大于列的宽度
                        iLen = Len(OutText)
                        For iStart = 1 To iLen
                            strOutText1 = Mid(OutText, 1, iLen - iStart)
                            VsPreview.CalcText = strOutText1
                            If VsPreview.TextWid <= gColWidth(i + 1) - iSepLeft * 2 Then Exit For
                        Next iStart
                        
                        '计算文字距表格线的距离
                        iSepTop = (gRowHeight - VsPreview.TextHei * 2) / 2
                        Y1 = mTop + iSepTop
                        '分两部分输出
                        strOutText1 = Mid(OutText, 1, iLen - iStart)
                        Call mWriteText(X, Y1, strOutText1)
                        strOutText1 = Mid(OutText, iLen - iStart + 1, iStart)
                        Y1 = Y1 + VsPreview.TextHei
                        Call mWriteText(X, Y1, strOutText1)
                    Else
                        iSepTop = (gRowHeight - VsPreview.TextHei) / 2
                        Y = mTop + iSepTop + 30
                        Call mWriteText(X, Y, OutText)
                    
                    End If
                Else
                    
                    OutText = Mid(TmpOutText, 1, iVBCRLF - 2)
                    VsPreview.CalcText = OutText
                    iSepTop = (gRowHeight - VsPreview.TextHei * 2) / 2
                    Y = mTop + iSepTop
                    Call mWriteText(X, Y, OutText)
                    OutText = Mid(TmpOutText, iVBCRLF + 1, Len(TmpOutText) - iVBCRLF)
                    Y = Y + VsPreview.TextHei '- 120
                    Call mWriteText(X, Y, OutText)
                End If
                left = left + gColWidth(i + 1)
                i = i + 1
            End If
        Next iCol
        left = VsPreview.Marginleft
        mTop = mTop + gRowHeight
        VsPreview.CurrentX = left
    Next iRow
    
    mbListVsFlex = True
    Exit Function
ErrListVsFlex:
    Screen.MousePointer = vbDefault
    mbListVsFlex = False
    gShowMsg "预览学生名单出错 frmPreview.mbListVsFlex"
    
End Function

Private Function mbListVsfString() As Boolean
'*********************************************
'
'列表VSFLEX内容到打印机
'
'**********************************************
    Dim left            As Double
    Dim X               As Double
    Dim Y1              As Double
    Dim Y               As Double
    Dim iSepLeft        As Double
    Dim iSepTop         As Double
    Dim OutText         As String
    Dim TmpOutText      As String
    Dim strOutText1     As String
    Dim i               As Integer
    Dim iStart          As Integer
    Dim iVBCRLF         As Integer
    Dim iLen            As Integer
    Dim iRows           As Integer
    Dim iRow            As Integer
    
    On Error GoTo ErrListVsfString
    
    '********************************************
    '计算字体高度
    
    VsPreview.FontName = gFontNameCon
    VsPreview.FontSize = gFontSizeCon
    VsPreview.FontBold = gbFontBoldCon
    VsPreview.FontUnderline = gbFontUnderCon
    VsPreview.FontItalic = gbFontItalicCon
    
    VsPreview.CalcText = "测试字高"
    gRowHeight = VsPreview.TextHei * 2
    
    
    mbSetNextColumn = True
    
    '线条同字间距离
    iSepLeft = gLeftCon
    iSepTop = gTopCon
    
    left = VsPreview.CurrentX
    mTop = VsPreview.CurrentY
    
    iRows = gvsfItemData.Rows - 1
    
    For iRow = 3 To iRows
        
        If mbNextPage(mTop) Then VsPreview.NewPage

        For i = 0 To gCols - 1
            Call mDrawRect(left, mTop, gColWidth(i + 1), gRowHeight)
            X = left + iSepLeft
            '计算该字的长度符串是否超出
            OutText = Trim(gvsfItemData.TextMatrix(iRow, i))
            
            VsPreview.CalcText = OutText
            iSepTop = (gRowHeight - VsPreview.TextHei) / 2
            Y = mTop + iSepTop + 30
            Call mWriteText(X, Y, OutText)

            left = left + gColWidth(i + 1)
        Next i
        left = VsPreview.Marginleft
        mTop = mTop + gRowHeight
        VsPreview.CurrentX = left
    Next iRow
    
    mbListVsfString = True
    Exit Function
ErrListVsfString:
    Screen.MousePointer = vbDefault
    mbListVsfString = False
    gShowMsg "预览学生名单出错 frmPreview.mbListVsfString"
    
End Function
Private Function mbPrintMuliVsf() As Boolean
'***************************************
'向打印机输出VSFLEX表格中的内容
'
    On Error GoTo ErrPrintMuliVsf
    
    mbBeginLine = False
    Screen.MousePointer = vbHourglass
    VsPreview.StartDoc
    VsPreview.FontName = gFontNameCon

⌨️ 快捷键说明

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