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

📄 modtemplate.bas

📁 超经典的打印预览动态库源码 版权: 本资源版权归作者所有 说明: 本资源由源码天空搜集,仅提供学习参考
💻 BAS
字号:
Attribute VB_Name = "ModTemplate"

Option Explicit
'**************************************************************
'*模块名称:ModTemplate
'*模块功能:模板文件的操作
'*说明:
'*
'*备注:
'*
'*作者:chlf78
'*日期:2002-04-16 21:30:38
'***************************************************************

Private Const ModalName = "ModTemplate"


'**************************************************************
'*名称:funSaveTemplate
'*功能:保存到模板文件
'*传入参数:
'*      rpt         --报表对象
'*      filename    --模板文件位置
'*返回参数:
'*      是否保存成功
'*作者:chlf78
'*日期:2002-04-16 21:36:03
'***************************************************************
Public Function funSaveTemplate(rpt As Report, FileName As String) As Boolean

    On Error GoTo err_proc
    
    Dim cnt         As Integer      '*对象的数目
    Dim i           As Integer
    Dim cText
    
    With rpt
    
        '*保存页面信息
        funSaveTemplate = SetIni(FileName, "page", "width", CStr(.width))
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "page", "height", CStr(.height))
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "page", "orient", CStr(.orient))
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "page", "leftmargin", CStr(.LeftMargin))
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "page", "rightmargin", CStr(.RightMargin))
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "page", "topmargin", CStr(.TopMargin))
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "page", "bottommargin", CStr(.BottomMargin))
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "page", "align", CStr(.Align))
        
        '*保存表头表尾页头页尾左部标签集合右部标签集合
        cnt = .Header.texts.Count
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "count", "header", CStr(cnt))
        i = 1
        For Each cText In .Header.texts.Items
            funSaveTemplate = funSaveTemplate And cText.Save(FileName, "header" & CStr(i))
            i = i + 1
        Next
        
        cnt = .Footer.texts.Count
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "count", "footer", CStr(cnt))
        i = 1
        For Each cText In .Footer.texts.Items
            funSaveTemplate = funSaveTemplate And cText.Save(FileName, "footer" & CStr(i))
            i = i + 1
        Next
        
        cnt = .Title.texts.Count
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "count", "title", CStr(cnt))
        i = 1
        For Each cText In .Title.texts.Items
            funSaveTemplate = funSaveTemplate And cText.Save(FileName, "title" & CStr(i))
            i = i + 1
        Next
        
        cnt = .Tail.texts.Count
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "count", "tail", CStr(cnt))
        i = 1
        For Each cText In .Tail.texts.Items
            funSaveTemplate = funSaveTemplate And cText.Save(FileName, "tail" & CStr(i))
            i = i + 1
        Next
        
        cnt = .LeftSection.texts.Count
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "count", "leftsection", CStr(cnt))
        i = 1
        For Each cText In .LeftSection.texts.Items
            funSaveTemplate = funSaveTemplate And cText.Save(FileName, "leftsection" & CStr(i))
            i = i + 1
        Next
        
        cnt = .RightSection.texts.Count
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "count", "rightsection", CStr(cnt))
        i = 1
        For Each cText In .RightSection.texts.Items
            funSaveTemplate = funSaveTemplate And cText.Save(FileName, "rightsection" & CStr(i))
            i = i + 1
        Next
        
        '*保存页头页尾表头表尾左部标签集合右部标签集合的对齐参照
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "align", "header", .Header.AlignMode)
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "align", "footer", .Footer.AlignMode)
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "align", "title", .Title.AlignMode)
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "align", "tail", .Tail.AlignMode)
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "align", "leftsection", .LeftSection.AlignMode)
        funSaveTemplate = funSaveTemplate And SetIni(FileName, "align", "rightsection", .RightSection.AlignMode)
        
        '*保存列头信息
        Set cText = .ColHeader.GetText(1, 1)
        funSaveTemplate = funSaveTemplate And cText.Save(FileName, "colheader")
        
        '*保存正文信息
         cnt = .Content.Cols
         funSaveTemplate = funSaveTemplate And SetIni(FileName, "count", "cols", CStr(cnt))
         
         '*保存每一列的信息
         For i = 1 To cnt
            funSaveTemplate = funSaveTemplate And .Content.GetColText(i).Save(FileName, "col" & CStr(i))
            funSaveTemplate = funSaveTemplate And SetIni(FileName, "col" & CStr(i), "merge", .Content.GetMergeCol(i))
         Next i
         
    End With
    
    Exit Function
    
'*错误处理
err_proc:
    funSaveTemplate = False
End Function


'**************************************************************
'*名称:funReadTemplate
'*功能:从模板文件中读取配置
'*传入参数:
'*      rpt         --报表对象
'*      filename    --模板文件位置
'*返回参数:
'*      是否保存成功
'*作者:chlf78
'*日期:2002-04-16 22:31:24
'***************************************************************
Public Function funReadTemplate(rpt As Report, FileName As String) As Boolean

    On Error GoTo err_proc
    
    Dim cnt         As Integer      '*对象的数目
    Dim i           As Integer
    Dim cText       As clsText
    
    With rpt
        '*读取页面信息
        .SetPrinter CSng(GetIni(FileName, "page", "width")), _
                    CSng(GetIni(FileName, "page", "height")), _
                    CInt(GetIni(FileName, "page", "orient"))
                    
        .SetMargin CSng(GetIni(FileName, "page", "leftmargin")), _
                   CSng(GetIni(FileName, "page", "rightmargin")), _
                   CSng(GetIni(FileName, "page", "topmargin")), _
                   CSng(GetIni(FileName, "page", "bottommargin"))
        .Align = CInt(GetIni(FileName, "page", "align"))
        
        '*读取表头表尾页头页尾左部标签集合右部标签集合
        cnt = CInt(GetIni(FileName, "count", "header"))
        Set .Header = Nothing
        Set .Header = New clsCollection

        For i = 1 To cnt
            Set cText = New clsText
            cText.Read FileName, "header" & CStr(i)
            .Header.AddText cText.tag, cText
            Set cText = Nothing
        Next
        
        cnt = CInt(GetIni(FileName, "count", "footer"))
        Set .Footer = Nothing
        Set .Footer = New clsCollection

        For i = 1 To cnt
            Set cText = New clsText
            cText.Read FileName, "footer" & CStr(i)
            .Footer.AddText cText.tag, cText
            Set cText = Nothing
        Next
        
        cnt = CInt(GetIni(FileName, "count", "title"))
        Set .Title = Nothing
        Set .Title = New clsCollection

        For i = 1 To cnt
            Set cText = New clsText
            cText.Read FileName, "title" & CStr(i)
            .Title.AddText cText.tag, cText
            Set cText = Nothing
        Next
        
        cnt = CInt(GetIni(FileName, "count", "tail"))
        Set .Tail = Nothing
        Set .Tail = New clsCollection

        For i = 1 To cnt
            Set cText = New clsText
            cText.Read FileName, "tail" & CStr(i)
            .Tail.AddText cText.tag, cText
            Set cText = Nothing
        Next
        
        cnt = CInt(GetIni(FileName, "count", "leftsection"))
        Set .LeftSection = Nothing
        Set .LeftSection = New clsCollection

        For i = 1 To cnt
            Set cText = New clsText
            cText.Read FileName, "leftsection" & CStr(i)
            .LeftSection.AddText cText.tag, cText
            Set cText = Nothing
        Next
        
        cnt = CInt(GetIni(FileName, "count", "rightsection"))
        Set .RightSection = Nothing
        Set .RightSection = New clsCollection

        For i = 1 To cnt
            Set cText = New clsText
            cText.Read FileName, "rightsection" & CStr(i)
            .RightSection.AddText cText.tag, cText
            Set cText = Nothing
        Next
        
        '*保存页头页尾表头表尾的对齐参照
        .Header.AlignMode = CInt(GetIni(FileName, "align", "header"))
        .Footer.AlignMode = CInt(GetIni(FileName, "align", "footer"))
        .Title.AlignMode = CInt(GetIni(FileName, "align", "title"))
        .Tail.AlignMode = CInt(GetIni(FileName, "align", "tail"))
        .LeftSection.AlignMode = CInt(GetIni(FileName, "align", "leftsection"))
        .RightSection.AlignMode = CInt(GetIni(FileName, "align", "rightsection"))
        
        '*读取正文信息
        cnt = CInt(GetIni(FileName, "count", "cols"))

        '*读取每一列的信息
        For i = 1 To cnt
        
            Set cText = New clsText
            cText.Read FileName, "col" & CStr(i)

            .Content.SetColText i, cText
            
            Set cText = Nothing
            
            '*设置合并列
            .Content.SetMergeCol i, CBool(GetIni(FileName, "col" & CStr(i), "merge"))
        Next i
        
        '*读取列头信息
        Set cText = New clsText
        cText.Read FileName, "colheader"

        Dim j               As Integer
        Dim tmpStr          As String
        Dim tmpWidth        As Single
        Dim tmpLeft         As Single
        Dim tmpTop          As Single
        Dim mText           As clsText
        
        For i = 1 To .ColHeader.Cols
            For j = 1 To .ColHeader.rows
            
                Set mText = .ColHeader.GetText(i, j)
                
                With mText
                
                    tmpStr = .stringX
                    tmpWidth = .width
                    tmpLeft = .left
                    tmpTop = .Top
                    
                    cText.Clone mText
                    
                    .stringX = tmpStr
                    .width = tmpWidth
                    .width = rpt.Content.GetColText(i).width
                    .left = tmpLeft
                    .Top = tmpTop
                    
                    .height = .rowheight
                End With
                
            Next j
        Next i
        
        Set cText = Nothing
        
        .CalPage
        
    End With
    
    funReadTemplate = True
    Exit Function
    
'*错误处理
err_proc:
    funReadTemplate = False
End Function


⌨️ 快捷键说明

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