Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: 79137913 en Abril 17, 2014, 02:26:37 pm

Título: Recursion para poblar un treeview
Publicado por: 79137913 en Abril 17, 2014, 02:26:37 pm
HOLA!!!

Quisiera si alguien me puede ayudar con esto:
(si, necesito codigo, me estoy quemando la cabeza y no me sale)

El tema es el siguiente, tengo un archivo como este:
Código: [Seleccionar]
HKCU\AppEvents\Schemes
HKCU\AppEvents\Schemes\Apps
HKCU\AppEvents\Schemes\Apps\.Default
HKCU\AppEvents\Schemes\Apps\.Default\.Default
HKCU\AppEvents\Schemes\Apps\.Default\.Default\.Current
HKCU\AppEvents\Schemes\Apps\.Default\.Default\.Default
HKCU\AppEvents\Schemes\Apps\.Default\AppGPFault
HKCU\AppEvents\Schemes\Apps\.Default\AppGPFault\.Current
HKCU\AppEvents\Schemes\Apps\.Default\AppGPFault\.Default
HKCU\AppEvents\Schemes\Apps\.Default\CCSelect
HKCU\AppEvents\Schemes\Apps\.Default\Close
HKCU\AppEvents\Schemes\Apps\.Default\Close\.Current
HKCU\AppEvents\Schemes\Apps\.Default\Close\.Default
y mucho mas largo, que son las claves de registro con sus path.

Necesito poblar un listview con ese arbol, pero no se me ocurre como hacer una funcion recursiva para que me haga ese tipo de metodo.

Espero que me hayan entendido.

Muchas Gracias.

GRACIAS POR LEER!!!
Título: Re:Recursion para poblar un treeview
Publicado por: cobein en Abril 17, 2014, 05:33:13 pm
Código: [Seleccionar]
Private Sub Form_Load()

    AddNodes "HKCU\AppEvents\Schemes"
    AddNodes "HKCU\AppEvents\Schemes\Apps\.Default\Close\.Current"
    AddNodes "HKCU\AppEvents\Schemes\Apps\.Default"
    AddNodes "HKCU\AppEvents\Schemes\Apps\.Default\AppGPFault\.Current"
    AddNodes "HKCU\AppEvents\Schemes\Apps\.Default\.Default\.Current"
End Sub

Private Sub AddNodes(ByVal sData As String)
    Dim cColl As Collection
    Set cColl = SplitItems(sData)
    Insert cColl, Nothing
End Sub

Private Function Insert(ByVal cItems As Collection, ByVal objParent As Node)
    Dim objNode As Node
   
    If Not cItems.Count = 0 Then

        If objParent Is Nothing Then
       
            For Each objNode In TreeView1.Nodes
                If objNode.Text = cItems.Item(1) Then
                    Set objParent = objNode
                    cItems.Remove 1
                    Insert cItems, objParent
                    Exit Function
                End If
            Next
       
            Set objParent = TreeView1.Nodes.Add(Text:=cItems.Item(1))
            cItems.Remove 1
            Insert cItems, objParent
   
        Else
       
            For Each objNode In TreeView1.Nodes
                If objNode.Text = cItems.Item(1) Then
                    If objNode.Parent = objParent Then
                        Set objParent = objNode
                        cItems.Remove 1
                        Insert cItems, objParent
                        Exit Function
                    End If
                End If
            Next
       
            Set objParent = TreeView1.Nodes.Add(objParent, tvwChild, Text:=cItems.Item(1))
            cItems.Remove 1
            Insert cItems, objParent
        End If
    End If
End Function

Private Function SplitItems(sData As String) As Collection
    Dim svItems() As String
    Dim i As Long
   
    Set SplitItems = New Collection
    svItems = Split(sData, "\")
    For i = 0 To UBound(svItems)
        SplitItems.Add svItems(i)
    Next
   
End Function
Título: Re:Recursion para poblar un treeview
Publicado por: 79137913 en Abril 17, 2014, 08:21:44 pm
HOLA!!!

Mil Gracias cobein!

El lunes lo testeo :D

GRACIAS POR LEER!!!