Hallo,
versuche gerade den Inhalt einer Datei im TreeView TreeView darzstellen. Den Code habe ich von Tipps u. Tricks.
Bei der unterstrichenden Zeile bricht vb ab zeigt die Meldung, Laufzeitfehler 424 "Objekt erforderlich" an. Habe keine Ahnung was ich da ändern muss damit es funktioniert.
Mfg: Crysis
' TreeView-Einträge aus Datei einlesen
Public Sub tvw_Load(tvw As TreeView, ByVal sFile As String)
Dim F As Integer
Dim sLine As String
Dim sData() As String
Dim nIndent As Integer
Dim sKey As String
Dim sText As String
Dim nImg As String
Dim nImgSel As String
Dim nForeColor As Long
Dim nBackColor As Long
Dim bBold As Boolean
Dim sTag As String
Dim bChecked As Boolean
Dim bExpanded As Boolean
Dim bSorted As Boolean
Dim oNode As Node
Dim NodeX As Node
Dim nLastIndent As Integer
' Existiert die Datei?
If Dir$(sFile, vbNormal) <> "" Then
With tvw
' Treeview löschen
.Nodes.Clear
' Darstellung abschalten
.Visible = False
DoEvents
' Datei zum Lesen öffnen
F = FreeFile
Open sFile For Input As #F
' Alle Einträge nacheinander einlesen
nLastIndent = 0
While Not EOF(F)
Line Input #F, sLine
sData = Split(sLine, vbTab)
' Zeile in Einzel-Informationen zerlegen
nIndent = Len(sData(0))
sKey = sData(1)
sText = sData(2)
nImg = sData(3)
nImgSel = sData(4)
nForeColor = Val(sData(5))
nBackColor = Val(sData(6))
bBold = CBool(sData(7))
sTag = sData(8)
bChecked = CBool(sData(9))
bExpanded = CBool(sData(10))
bSorted = CBool(sData(11))
If nIndent = 0 Then
' Root
Set oNode = .Nodes.Add(, , sKey, sText, nImg)
tvw_LoadSetData oNode, nForeColor, nBackColor, _
bBold, bChecked, sTag, bExpanded, bSorted
Else
' Parent ermitteln
If nIndent < nLastIndent Then
While nIndent < nLastIndent
Set oNode = oNode.Parent
nLastIndent = nLastIndent - 1
Wend
ElseIf nIndent > nLastIndent And nIndent > 1 Then
Set oNode = NodeX
End If
' Eintrag hinzufügen
[u]Set NodeX = .Nodes.Add(oNode, tvwChild, _
sKey, sText, nImg).ExpandedImage = nImgSel
tvw_LoadSetData NodeX, nForeColor, nBackColor, _
bBold, bChecked, sTag, bExpanded, bSorted
End If
nLastIndent = nIndent
Wend
' Darstellung wieder einschalten
.Visible = True
End With
Close #F
End If
End Sub |