Necesito crear una aplicación que me muestro un árbol de directorios a partir de uno indicado y me interesaría mucho colocar un contro tree view, podría alguien decirme como hacerlo. ¿Cómo se usa el control tree view?, o cualquier otroa forma de solucionar el problema.
1 Respuesta
Respuesta
1
1
Anónimo
Te paso un ejemplo... Crea un proyecto nuevo Hace "Project" - "Components" y selecciona "Microsoft Windows Common Controls 6.0" Hace "Project" - "References" y selecciona "Microsoft Scripting Runtime" Añadile al form estos controles: - Un TextBox - Un CommandButton - Un TreeView Pegale al form el siguiente codigo: Option Explicit Dim iFSO As Scripting.FileSystemObject Private Sub Form_Initialize() Set iFSO = New Scripting.FileSystemObject End Sub Private Sub Form_Terminate() Set iFSO = Nothing End Sub Private Sub Command1_Click() Dim iDirectorio As Scripting.Folder Dim iNodo As MSComctlLib.Node Set iDirectorio = iFSO.GetFolder(Text1.Text) Set iNodo = TreeView1.Nodes.Add(, , , iDirectorio.Path) iPoblarHijos iNodo, iDirectorio iNodo.EnsureVisible Set iNodo = Nothing Set iDirectorio = Nothing End Sub Private Function iPoblarHijos(ByVal Nodo As MSComctlLib.Node, ByVal Directorio As Scripting.Folder) Dim iDirectorio As Scripting.Folder Dim iNodo As MSComctlLib.Node For Each iDirectorio In Directorio.SubFolders Set iNodo = TreeView1.Nodes.Add(Nodo, tvwChild, , iDirectorio.Name) iPoblarHijos iNodo, iDirectorio Set iNodo = Nothing Next Nodo.Expanded = True End Function Salva y ejecuta el proyecto, para probarlo escribí en el TextBox un directorio, y presiona el CommandButton Fíjate que el directorio este bien escrito ya que el código no hace validaciones, ademas para probar trata de usar un directorio que no tenga muchos subdirectorios (para que no tarde tanto) Bueno, te explico un poco... Acá hay dos temas, uno es el uso del objeto FileSystemObject, que doy por hecho que si estas haciendo una aplicación para recorrer directorios lo conoces, si no es así y tienes dudas, te pido por favor que me las consultes en otra pregunta, para si esta se va hacer demasiado larga) Con respecto al TreeView... El control TreeView tiene una propiedad Nodes que es una colección de todo los Nodos que tiene el treeview, como ves en el código tiene un método Add que te permite añadir nuevos nodos, los parámetros de Add son los siguientes: TreeView. Nodes. Add Relative, Relationship, Key, Text, Image, SelectedImage Ademas de añadir un nodo, este método te devuelve un puntero al mismo. Con respecto a los parámetros, los más importantes son Relative y Relationship: Relative indica a que nodo es relativo el nodo que vas a añadir, y Relationship indica que relación tiene, es decir, fíjate en el ejemplo de la función "iPoblarHijos": Yo le paso "Nodo" a Relative, y la constante "tvwChild" a Relationship, con lo cual le digo que el nodo que voy a añadir es "HIJO" (por el "tvwChild") de "Nodo" Si vos quieres añadir un nodo raíz (que no tenga padres) haces como en la función "Command1_Click", en la que dejo estos parámetros vacíos. El resto de los parámetros son: Key, la clave en la colección de nodo (Key existe para todos los objetos Collection) Text, el texto que aparece en el nodo Image, SelectedImage, el numero de imagen que posse el nodo, cuando esta libre (Image) y cuando esta seleccionado (SelectedImage) Para usar Image, SelectedImage tienes que asociar el TreeView a un ImageList Ademas del metodo Add, la coleccion Nodes posee los metodos: TreeView. Nodes. Remove: quita un nodo del arbol, recibe como parametro el Index del nodo (en todas las colecciones cada elemento tiene un indice) TreeView1. Nodes. Clear: borra todos los nodos TreeView1. Nodes. Count: te da la cantidad de nodos TreeView1. Nodes. Item: te devuelve un nodo por su indice (igual que Remove) Estoy mencionando mucho el objecto Collection y las colecciones (doy por hecho que conoces el tema), si tienes dudas sobre el tema, igual que antes te pido que m