queryresult.cls

来自「通用书店管理系统」· CLS 代码 · 共 159 行

CLS
159
字号
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "QueryResult"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Const chrDefaultSplit = "|"

Private arrHeader  As Variant                       '存放表列头
Private strHeaderMerge As String                    '列头合并处理
Private arrInputArray As Variant                    '存放输入数组
Private arrDataFieldsType As Variant                '存放数据字段类型
Private defPrintInfo As New DefinePrintInfo             '定义打印信息

Public arrGroup As Variant                             '分组
Public arrResizeColWidth As Variant                    '自动列宽缩放
Public arrResizeRowHeight As Variant                   '自动行高缩放
Public arrSort As Variant                              '排序
Public arrSubtotal As Variant                          '汇总

Dim frm As frmQueryResult

'设置数组
Public Property Let InputArray(ByVal vNewValue As Variant)
    arrInputArray = vNewValue
End Property

'设置表列头
Public Property Let Header(ByVal vNewValue As Variant)
    arrHeader = vNewValue
End Property

'设置列头合并串
Public Property Let HeaderMerge(ByVal vNewValue As String)
    strHeaderMerge = vNewValue
End Property


'得到控件句柄
Public Property Get FlexGridHwnd() As Long
    FlexGridHwnd = frm.fg.hWnd
End Property

'设置数据字段类型
Public Property Let DataFieldsType(ByVal vNewValue As Variant)
    arrDataFieldsType = vNewValue
End Property

'设置打印信息
Public Property Set PrintInfo(ByVal vNewValue As DefinePrintInfo)
    Set defPrintInfo = vNewValue
End Property


'显示结果窗体
Public Function ShowQueryResult() As Boolean
    Set frm = New frmQueryResult
    
    frm.arrInputArray = arrInputArray
    frm.arrHeader = arrHeader
    frm.strHeaderMerge = strHeaderMerge
    frm.arrDataFieldsType = arrDataFieldsType
    
    frm.arrGroup = arrGroup
    frm.arrResizeColWidth = arrResizeColWidth
    frm.arrResizeRowHeight = arrResizeRowHeight
    frm.arrSort = arrSort
    frm.arrSubtotal = arrSubtotal
    
    Set frm.defPrintInfo = defPrintInfo
        
    frm.Show vbModal
    
    ShowQueryResult = True
    
    Set frm = Nothing
    
End Function

'打印
Public Function showPrint() As Boolean
    Dim ro As New ResultOutput
    ro.hwnd_FlexGrid = frm.fg.hWnd
    Set ro.PrintInfo = defPrintInfo
    ro.showPrint

End Function

'调用分组功能
Public Sub Group(ByVal ColsIndex As String, Optional chrSplit As String = chrDefaultSplit)
    Dim arr
    Dim i%
    arr = Split(Trim(ColsIndex), chrSplit)
    If UBound(arr) > -1 Then
        For i = 0 To UBound(arr)
            frm.fg.ColSort(i) = flexSortGenericAscending
            frm.fg.Sort = flexSortUseColSort
            
            frm.fg.MergeCells = flexMergeRestrictRows
            frm.fg.MergeCol(arr(i)) = True
            
        Next i
        frm.fg.Redraw = flexRDDirect
    End If
    
End Sub

'调用统计方法
Public Sub Subtotal(ByVal lngFunction As SubtotalSettings, ByVal GroupOn As Long, ByVal TotalOn As Long, Optional Clear As Boolean = True)
     If Clear Then frm.fg.Subtotal (flexSTClear)
     Call frm.fg.Subtotal(lngFunction, GroupOn, TotalOn)
     frm.fg.Redraw = flexRDDirect
     
End Sub

'调用列自动缩放
Public Sub AutoSizeColumn(ByVal ColsIndex As String, Optional chrSplit As String = chrDefaultSplit)
    Dim arr
    Dim i%
    arr = Split(Trim(ColsIndex), chrSplit)
    If UBound(arr) > -1 Then
        For i = 0 To UBound(arr)
            frm.fg.AutoSizeMode = flexAutoSizeColWidth
            frm.fg.AutoSize (arr(i))
        Next i
        frm.fg.Redraw = flexRDDirect
    End If
    
End Sub

'调用行自动缩放
Public Sub AutoSizeRow(Optional ByVal ColsIndex As String, Optional chrSplit As String = chrDefaultSplit)
    Dim arr
    Dim i%
    arr = Split(Trim(ColsIndex), chrSplit)
    If UBound(arr) > -1 Then
        For i = 0 To UBound(arr)
            frm.fg.AutoSizeMode = flexAutoSizeRowHeight
            frm.fg.WordWrap = True
            frm.fg.AutoSize (arr(i))
        Next i
        frm.fg.Redraw = flexRDDirect
    End If
        
End Sub

'调用保存方法
Public Function Save(ByVal FileName As String)
    Call frm.fg.SaveGrid(FileName, flexFileTabText)
End Function

⌨️ 快捷键说明

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