Colabora
 

Explorador Grafico.Net

[Utilizando el Control ImageList]


Fecha: 18/Oct/2007 (12-oct-07)
Autor: Quispe Flores Johnny B.
Email: johnny66621@hotmail.com


hOlaaa!!! AdictosNet jejeje aqui me tienen nuevamente y esta vez hablaremos sobre ....

El Control ImageList  

Este Objeto, Herramienta o Control ImageList, como quieras llamarlo Controla una Coleccion de Imagenes que suelen utilizar otros controles, como por ejemplo uhmmmmmm, el control ListView, El TreeView o el mismo ToolStrip.

Objetivos de Este Articulo:

Los Objetivos de este articulo son claros y consiste en que Aprendas a Utilizar Correctamente el Control ImageList y el Control TreeView, para ello diseñaremos una Aplicacion Windows Forms.

Ala Cual añadiremos otros controles aparte del ImageList que son:

• Una caja de texto TextBox al cual llamaremos: txtRuta
• Un Control TreeView al Cual llamaremos: tvwDirectorios
•Y Finalmente añadiremos tambien el control ListView al cual llamaremos: lvwArchivos

Al Control lvwArchivos le agregaremos 4 Columnas, que son:

•Nombre.
•Tamaño.
•Tipo.
•Modificado.

Detalle no Olvidar Agregar el Control ImageList, el cual es la Pieza Fundamental de este Articulo..jejeje solo te lo hacia recordar..

Asi Luce nuestra aplicacion en tiempo de diseño..


Para Empezar a Codificar Crearemos un Controlador de Excepciones en el Evento Load del Formulario, el cual nos servira para Manejar las Excepciones que Ocurran en el Transcurso del desarrollo de la Aplicacion.

Dentro del Controlador de Errores declararemos variales a las cuales les haremos referencia con algunas Clases del Visual Studio 2005 como por ejemplo la Clase Environment, la funcion GetLogicalDrives, la funcion GetDirectories y muchas mas...tranquilo todo a paso lento..

Empezemos!!!

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

' Manejo de Excepciones (errores)
Try
     Dim
Indice As Integer
'Environment: Proporciona información acerca del entorno y la plataforma actual, y la forma de manipularlos..
     Dim Drives As String() = Environment.GetLogicalDrives()
'GetLogicalDrives: Matriz de cadena en la que cada elemento contiene el nombre de una unidad lógica.

' Drives: Devuelve una colección de sólo lectura de todos los nombres de unidad disponibles.
     For Indice = 0 To Drives.Length - 1
     Dim adicionaUnidad As New TreeNode
     adicionaUnidad.Text = Drives(Indice)

' Nodes: Obtiene una colección de objetos que representa los nodos raíz del control
     tvwDirectorios.Nodes.Add(adicionaUnidad)
     agregarDirectorios(adicionaUnidad)
   Next Indice
' Caso de error
   Catch ex As Exception
   End Try
End Sub



'Seguidamente Crearemos una Funcion la cual llamaremos nodoActual

  Private Function nodoActual(  ByVal node   As TreeNode)   As String
     If node.Parent Is Nothing Then Return node.Text
     Return System.IO.Path.Combine(NodoActual(node.Parent), node.Text)
  End Function

'Luego de crear la funcion crearemos un metodo o procedimiento llamado agregardirectorios..
Private Sub agregarDirectorios(ByVal node As TreeNode)
' Manejo de Excepciones
Try
Dim
Directorio As New System.IO.DirectoryInfo(NodoActual(node))
Dim DirectorioActual As System.IO.DirectoryInfo() = _
Directorio.GetDirectories()
Dim Indice As Integer
For Indice = 0 To DirectorioActual.Length - 1
Dim name As String = DirectorioActual(Indice).Name
If Not name.Equals(".") And Not name.Equals("..") Then
node.Nodes.Add(New TreeNode(name))
End If
Next
Indice
'Caso de error
Catch ex As Exception
End Try
End Sub


'Tambien crearemos un Procedimiento llamado agregarSUBdirectorios...

Private Sub agregarSUBdirectorios(ByVal node As TreeNode)
Dim Indice As Integer
For Indice = 0 To node.Nodes.Count - 1
agregarDirectorios(node.Nodes(Indice))
Next Indice
End Sub


'Despues Llenaremos esos Rollos de Archivos con el procedimiento llenarArchivos...

Private Sub llenarArchivos(ByVal AsignaRuta As String)
Dim Archivos(), NombreArchivo As String
Dim InfoArchivo As System.IO.FileInfo
Dim oListViewItem As ListViewItem
Archivos = System.IO.Directory.GetFiles(AsignaRuta)
' Limpiamos el contenido de ListView de esta manera
' nos aseguramos de actualizarlo
lvwArchivos.Items.Clear()
For Each NombreArchivo In Archivos
InfoArchivo = New System.IO.FileInfo(NombreArchivo)
'Recuperamos y mostramos el nombre de archivo
oListViewItem = lvwArchivos.Items.Add(Microsoft.VisualBasic.Left _
(InfoArchivo.Name.ToString, Len(InfoArchivo.Name.ToString) - 4))
'Mostramos la longitud del archivo en Bytes
oListViewItem.SubItems.Add(InfoArchivo.Length.ToString & " Bytes")
' Mostramos la extensión (Tipo archivo)
oListViewItem.SubItems.Add(InfoArchivo.Extension)
' Mostrar la última fecha fr modificación del archivo
oListViewItem.SubItems.Add(InfoArchivo.LastAccessTime)
Next
txtRuta.Text = AsignaRuta
End Sub


' Tambien Usaremos un nuevo Evento llamado AfterExpand El cual Tiene Lugar a Ejecutarse cuando se Expande un Nodo.

Private Sub tvwDirectorios_AfterExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvwDirectorios.AfterExpand

Dim nodeExpanding As TreeNode = CType(e.Node, TreeNode)
agregarSUBdirectorios(nodeExpanding)
End Sub

'Y para terminar este Articulo tambien haremos uso de otro evento llamado AfterSelect..

Private Sub tvwDirectorios_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs)Handles tvwDirectorios.AfterSelect

' Manejo de Excepciones
Try
Dim NodoTemporal As New TreeNode
Dim RutaTemporal As String
Dim RetornoPosicion As Integer
Dim RutaCompleta As String
NodoTemporal = e.Node.Parent
Do While Not IsNothing(NodoTemporal)
' buscamos la cadena "\" en la variable NodoTemporal
RetornoPosicion = InStr(NodoTemporal.Text,"\", CompareMethod.Text)
If RetornoPosicion = 0 Then RutaTemporal = NodoTemporal.Text + _
"\" + RutaTemporal Else RutaTemporal = _
NodoTemporal.Text(+RutaTemporal)
NodoTemporal = NodoTemporal.Parent
Loop
' Llenamos los archivos segúng la ruta del archivo de texto.
llenarArchivos(RutaTemporal + e.Node.Text)
' interceptamos en caso de error...
Catch ex As Exception
End Try
End Sub


Nuestra Aplicacion en Tiempo de Ejecucion se verias mas o menos asi..





Espero te halla sido de utilidad este Articulo..... nos veremos en la Proxima Entrega
Nota: Todo el Codigo visto en este Articulo es Valido para las Versiones 2003 y 2005..

Saludos Quispe Flores Johnny B.
"No pienses en las Cosas que tienes, Piensa en las cosas que te hacen falta.."
Cualquier duda o Sugerencia te agradeceria muchisimo que me la hicieras saber a mi email: johnny66621@hotmail.com
Saludos Quispe Flores Johnny B.!!!