End Sub'----初始化时,使所有列都不可见 Private Sub InvisibleColumns(ByRef Slt As Split, ColCount As Integer) Dim k As Integer For k = 0 To ColCount - 1 Slt.Columns(k).Visible = False Next End Sub'----设置Split属性 Private Sub SetPropertyOfSplit(ByRef Slt As Split) Slt.RecordSelectors = False Slt.DividerStyle = dbgDarkGrayLine Slt.MarqueeStyle = dbgHighlightRow Slt.ScrollBars = 0 '--0-没有,1-水平滚动条,2-垂直,3-水平垂直,4-自动 Slt.ExtendRightColumn = True End Sub
Option ExplicitPublic Sub GridGroup(ByRef rs As Recordset, ByRef TDBGrid1 As TDBGrid)
On Error GoTo ERRH
Dim FieldCount As Integer
Dim i As Integer, k As Integer
Dim SplitIdx As Integer
Dim Slt As Split
Dim pos As Integer
Dim strHead() As String '--如果列标题由两部分组成,则将其分离并存入数组
TDBGrid1.ClearFields '--清除Grid布局
TDBGrid1.AllowUpdate = False '--不允许修改
If Not (TDBGrid1.DataSource Is rs) Then Set TDBGrid1.DataSource = rs
TDBGrid1.Splits(0).Caption = " " '--设置Split空白标题
TDBGrid1.Splits(0).DividerStyle = dbgDarkGrayLine
TDBGrid1.Splits(0).MarqueeStyle = dbgHighlightRow
TDBGrid1.Splits(0).ScrollBars = 0 '--0-没有,1-水平滚动条,2-垂直,3-水平垂直,4-自动
TDBGrid1.Splits(0).ExtendRightColumn = True '--使最右面列紧贴右面
Call InvisibleColumns(TDBGrid1.Splits(0), rs.Fields.Count)
Do While i < rs.Fields.Count
pos = InStr(rs.Fields(i).Name, ".") '--查找 "." 的位置
If pos <> 0 Then
strHead = Split(rs.Fields.Item(i).Name, ".")
If TDBGrid1.Splits(SplitIdx).Caption <> strHead(0) Then
SplitIdx = SplitIdx + 1
Set Slt = TDBGrid1.Splits.Add(SplitIdx)
'----设置Split属性
Call SetPropertyOfSplit(Slt)
'----初始化时,使所有列都不可见
Call InvisibleColumns(Slt, rs.Fields.Count)
End If
Slt.Caption = strHead(0)
Slt.Columns(i).Caption = strHead(1)
ElseIf SplitIdx <> 0 And Len(Trim(TDBGrid1.Splits(SplitIdx).Caption)) <> 0 Then SplitIdx = SplitIdx + 1
Set Slt = TDBGrid1.Splits.Add(SplitIdx)
'----设置Split属性
Call SetPropertyOfSplit(Slt)
'----初始化时,使所有列都不可见
Call InvisibleColumns(Slt, rs.Fields.Count) Slt.Caption = " " '--设置Split空白标题
End If
TDBGrid1.Splits(SplitIdx).Columns(i).Visible = True
TDBGrid1.Splits(SplitIdx).Columns(i).HeadAlignment = 2 '--居中
i = i + 1
Loop
TDBGrid1.Splits(SplitIdx).ScrollBars = 2 '--垂直滚动条
Exit Sub
ERRH: MsgBox Err.Description
End Sub'----初始化时,使所有列都不可见
Private Sub InvisibleColumns(ByRef Slt As Split, ColCount As Integer)
Dim k As Integer
For k = 0 To ColCount - 1
Slt.Columns(k).Visible = False
Next
End Sub'----设置Split属性
Private Sub SetPropertyOfSplit(ByRef Slt As Split)
Slt.RecordSelectors = False
Slt.DividerStyle = dbgDarkGrayLine
Slt.MarqueeStyle = dbgHighlightRow
Slt.ScrollBars = 0 '--0-没有,1-水平滚动条,2-垂直,3-水平垂直,4-自动
Slt.ExtendRightColumn = True
End Sub