针对MSHFlexGrid的一系列通用方法-项目中实践代码分享

2023-06-25,,

1.给MSHFlexGrid填充数据通用方法

'自定义报表填充程序 fgrid
Public Function ShowformfData(Resultset As ADODB.Recordset, ary As Variant, fg As MSHFlexGrid) As Variant
Dim cl As field
Static GridSetup As Boolean
Dim MaxL As Long
Dim Op As Long
Dim rsl As ADODB.Recordset
Dim rows, sl, field_value As Variant
Dim i As Long
Dim j, k As Long 'On Error GoTo ShowDataEH
Set rsl = Resultset
'------------------------------------------
'等ERP系统全部导入到SQL SERVER 中才可用下面两行代码
'如果不连AS400 ,则直接用下面函数
If rsl.EOF Then
Exit Function
End If ShowMSHFlexGrid fg, rsl, ary
Exit Function
'
fg.Clear
fg.Cols =
fg.rows =
fg.ScrollTrack = True
'fg.ScrollTrack = False
Op =
fg.Enabled = True
If rsl.EOF Then
MsgBox ("没有满足条件的记录,请重新修改您的查询条件")
fg.rows =
fg.Enabled = False
Exit Function
Else
fg.Visible = True
For i = To rsl.Fields.count
fg.Cols = fg.Cols +
If i = Then
fg.colwidth() =
Else fg.Col = Op
If rsl.Fields(Op - ).DefinedSize > Then
MaxL =
Else
MaxL = rsl.Fields(Op - ).ActualSize +
End If
If MaxL > Then MaxL =
If MaxL < Then MaxL =
fg.colwidth(fg.Col) = MaxL *
Op = Op +
End If
fg.TextMatrix(, i) = ary(i)
'FG.TextMatrix(0, i) = rsl.Fields(i).Name Next i
'Cols = fg.Cols + 1
'For I = 0 To rsl.Fields.Count
'fg.TextMatrix(0, I) = ary(I)
'Next I
fg.rows =
k =
If Not (rsl.BOF And rsl.EOF) Then
i =
Do While Not rsl.EOF For j = To rsl.Fields.count
If j = Then
fg.TextMatrix(fg.rows - , j) = k
Else If Not IsNull(rsl.Fields(j - ).Value) Then
fg.TextMatrix(fg.rows - , j) = Trim(rsl.Fields(j - ).Value)
End If
If rsl.Fields(j - ).Type = adChar Then
fg.ColAlignment(j) =
End If End If
Next j
fg.rows = fg.rows +
fg.TopRow = fg.TopRow +
fg.Refresh rsl.MoveNext
k = k +
Loop
fg.rows = fg.rows - End If End If
If fg.rows > Then
fg.TopRow =
fg.Refresh
End If SetRowColor fg
fg.FixedRows =
fg.row =
fg.Col = 'b:
Exit Function 'ShowDataEH:
' MsgBox err & vbCrLf & Error$
' fg.Visible = False
' Resume b End Function

2.更高效的方法获取是这样的,是今天在项目中必要要解决速度问题才弄出来的,而且即简单又快捷

Dim rsConstitute As ADODB.Recordset

txtsql = "select SSFXDM,KCWPDM,XTDWDM,SSZJYL from tabv "
Set rsConstitute = Query(txtsql, msgtext) Set FGridCheck.DataSource = rsConstitute

3.针对MSHFlexGrid的一系列通用方法:

Public Function fgclear(fg As MSHFlexGrid)
'
fg.Clear
fg.rows =
fg.Cols =
fg.FixedRows =
fg.FixedCols =
fg.colwidth() =
fg.colwidth() =
fg.row =
fg.Col =
End Function ' 设置MSHFlexGrid每列的颜色
Public Function SetColColor(fg As MSHFlexGrid)
'
Dim i
fg.FillStyle =
For i = To fg.Cols -
fg.Col = i
If i Mod <> Then
fg.row =
fg.RowSel = fg.rows -
fg.CellBackColor = &HC0FFFF
End If
Next i fg.FillStyle =
fg.row =
fg.Col = End Function ' 设置MSHFlexGrid每列的颜色
Public Function colw(fg As MSHFlexGrid) As String
'
Dim i
Dim S
S = ""
For i = To fg.Cols -
S = S & "fg.ColWidth(" & i & ")=" & fg.colwidth(i) & " '" & fg.TextMatrix(, i) & " " & Chr() & Chr()
Next i
colw = S End Function
Public Sub markfg1(ByRef fg As MSHFlexGrid, lb As Label, countlb As Label, delbutton As CommandButton)
Dim r, c
Dim markdgcount As Integer
r = fg.row
c = fg.Col If r <> Then
If InStr(fg.TextMatrix(r, ), "√") = Then
fg.TextMatrix(r, ) = "√ " & fg.TextMatrix(r, )
fg.Col =
fg.CellAlignment = For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &HFF& '红色 '蓝色&H8000000D
Next If countlb.Caption = "" Then
markdgcount =
Else
markdgcount = CInt(countlb.Caption) +
End If
Else
fg.TextMatrix(r, ) = Right(fg.TextMatrix(r, ), Len(fg.TextMatrix(r, )) - )
If Trim(fg.TextMatrix(fg.row, )) = "N" Then
If r Mod = Then
For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &HE0E0E0
Next
Else
For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &HFFFFFF
Next
End If
Else
For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &H80FF80
Next
End If
If countlb.Caption = "" Then
markdgcount =
Else
markdgcount = CInt(countlb.Caption) -
End If
End If
If markdgcount <> Then
countlb.Caption = markdgcount
lb.Caption = "已选择了 " & CStr(countlb.Caption) & " 条记录!"
delbutton.Enabled = True
Else
countlb.Caption = ""
lb.Caption = ""
delbutton.Enabled = False
End If
End If
End Sub

作者:王春天 2013.11.14   地址:http://www.cnblogs.com/spring_wang/p/3423182.html

针对MSHFlexGrid的一系列通用方法-项目中实践代码分享的相关教程结束。

《针对MSHFlexGrid的一系列通用方法-项目中实践代码分享.doc》

下载本文的Word格式文档,以方便收藏与打印。