' VSFlexGrid1 8.0 Help 实例:Outline Demo 改 VBA
' 在EXCEL VBA 运行源码
Private Sub UserForm_Initialize()
'With Me.MSFlexGrid1
With VSFlexGrid1
'.Editable = True
'.RowHeightMin = 360
.Cols = 3
.ExtendLastCol = True
.FixedCols = 0
.Rows = 1
.FormatString = "Node|Token|Setting"
.OutlineBar = flexOutlineBarComplete
.Gridlines = flexGridNone
.MergeCells = flexMergeSpill
'.AllowUserResising = flexResizeColumns
' suspend repainting to increase speed
VSFlexGrid1.Redraw = False
' populate the control
AddNode "Win.ini"
AddNode "System.ini"
AddNode "vb.ini"
' expand outline, resize to fit, collapse outline
VSFlexGrid1.Outline -1
VSFlexGrid1.AutoSize 1, 2
VSFlexGrid1.Outline 1
' repainting is back on
VSFlexGrid1.Redraw = True
End With
End Sub
Sub AddNode(inifile As String)
Dim ln As String, p As Integer
With VSFlexGrid1
' create file node
'============Rows 改为 .Rows===========
'.AddItem inifile
'.IsSubtotal(Rows - 1) = True
'.Cell(flexcpFontBold, Rows - 1, 0) = True
.IsSubtotal(.Rows - 1) = True '合並單元格及區域連接
.Cell(flexcpFontBold, .Rows - 1, 0) = True
' read ini file
Open "d:\windows\" & inifile For Input As #1
While Not EOF(1)
Line Input #1, ln
' if this is a section, add node
If Left(ln, 1) = "[" Then
.AddItem Mid(ln, 2, Len(ln) - 2)
.IsSubtotal(.Rows - 1) = True
.RowOutlineLevel(.Rows - 1) = 1
.Cell(flexcpFontBold, .Rows - 1, 0) = True
' if this is regular data, add branch
ElseIf InStr(ln, "=") > 0 Then
p = InStr(ln, "=")
.AddItem vbTab & Left(ln, p - 1) & vbTab & Mid(ln, p + 1)
End If
Wend
Close #1
End With
End Sub
Private Sub VSFlexGrid1_DblClick()
Dim r As Long
With VSFlexGrid1
r = .Row
If .IsCollapsed(r) = flexOutlineCollapsed Then
.IsCollapsed(r) = flexOutlineExpanded
Else
.IsCollapsed(r) = flexOutlineCollapsed
End If
End With
End Sub
Private Sub VSFlexGrid1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then VSFlexGrid1_DblClick
End Sub