TreeView Export Routine
Exports a TreeView control (including ALL it's children) into a graphical representation with plain text.
AI
Shrnutí AI: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
Zdrojový kód
'sample output: ' '+- 07/21/01 - 11:57:09 PM '| \- Shell_TrayWnd - "" '| |- Button - "" '| |- TrayNotifyWnd - "" '| | \- TrayClockWClass - "" '| |- MSTaskSwWClass - "" '| \- SysTabControl32 - "" '************************************** Function exportTree(tree As TreeView) As String Dim txtlen As Long, txtbuffer As String, index As Long Dim vlines() As Boolean, ret as String ret = chr(13) & chr(10) ReDim Preserve vlines(0) vlines(0) = True numchildren = 0 exportTree = "+- " & Format(Date, "mm/dd/yy") & " - " & Format(Time, "hh:mm:ss AM/PM") & " - " Dim depth As Integer, start As Long index = Tree.Nodes.Item(1).FirstSibling.index Do On Error Resume Next Err.Clear index2 = Tree.Nodes.Item(index).Next.index If Err.Number = 91 Then On Error GoTo 0 vlines(0) = False exportTree = exportTree & ret & "| \- " & Tree.Nodes.Item(index).Text _ & getchildren(index, 0, vlines) Exit Do Else On Error GoTo 0 exportTree = exportTree & ret & "| |- " & Tree.Nodes.Item(index).Text _ & getchildren(index, 0, vlines) index = Tree.Nodes.Item(index).Next.index End If Loop exportTree = exportTree & ret & "|" & ret & "|" & ret & "|" & ret & "|" End Function 'the following function calls itself over and over for each child and returns with 'ALL of the children and their children, etc. of the current item in the tree Function getchildren(ByVal index As Long, ByVal childcnt As Integer, ByRef vlines() As Boolean, Optional data As String = "") As String Dim children As Integer childcnt = childcnt + 1 ReDim Preserve vlines(childcnt) children = Tree.Nodes.Item(index).children If children > 1 Then vlines(childcnt) = True data = data & ret & childspaces(childcnt, vlines) & "|- " & Tree.Nodes.Item(index).Child Call getchildren(Tree.Nodes.Item(index).Child.index, childcnt, vlines, data) index = Tree.Nodes.Item(index).Child.index For i% = 3 To children data = data & ret & childspaces(childcnt, vlines) & "|- " & Tree.Nodes.Item(index).Next Call getchildren(Tree.Nodes.Item(index).Next.index, childcnt, vlines, data) index = Tree.Nodes.Item(index).Next.index Next i% vlines(childcnt) = False data = data & ret & childspaces(childcnt, vlines) & "\- " & Tree.Nodes.Item(index).Next Call getchildren(Tree.Nodes.Item(index).Next.index, childcnt, vlines, data) ElseIf children = 1 Then vlines(childcnt) = False data = data & ret & childspaces(childcnt, vlines) & "\- " & Tree.Nodes.Item(index).Child Call getchildren(Tree.Nodes.Item(index).Child.index, childcnt, vlines, data) End If getchildren = data End Function 'This function is used to insert the correct amount of space from the edge 'to make all the children line up properly Function childspaces(childcnt As Integer, vlines() As Boolean) As String childspaces$ = "| " For i% = 1 To childcnt childspaces$ = childspaces$ & IIf(vlines(i% - 1), "| ", " ") Next i% End Function
Původní komentáře (3)
Obnoveno z Wayback Machine