ProgramasVb6
  FileListBox
 

FileListBox - Propiedades, métodos y eventos

 

El control FileListBox permite ver en un listado los archivos de un path determinado.

 

Propiedad Path

La propiedad por defecto del control es la propiedad Path.

Por ejemplo para cargar en el control todos los ficheros de la unidad c:windows al pulsar un botón:

Colocar un botón en el formulario y un control FileListBox. Pegar el siguiente código

  1. Option Explicit  
  2.   
  3.   
  4. '  -- Establecer la ruta del File List Box al ghacer clic en el botón  
  5. Private Sub Command1_Click()  
  6.     File1.Path = "c:windows"  
  7. End Sub  
  8.   
  9. Private Sub Form_Load()  
  10.     Command1.Caption = "Listar c:windows"  
  11. End Sub  

 

 

Importante : El FileListBox no contiene una opción para incluir los archivos de los subdirectorios, solo visualizará los ficheros de la carpeta actual.

La propiedad path es la propiedad por defecto del control FileListBox, por lo tanto no es necesario escribirla explícitamente, por lo cual esto también es válido :

  1. Option Explicit  
  2.   
  3. Private Sub Command1_Click()  
  4.     File1 = "c:windows"  
  5. End Sub  

 

 

Nota. Los controles DirListBox y DriveListBox también tienen sus propiedades por defecto. Para el control Dir es la propiedad Path y para el Drive es la propiedad Drive, y por lo tanto cuando no escribamos ninguna propiedad, es decir solo se escriba el nombre del control y se le asigne el valor, se asumirá como Default ( la propiedad por defecto )

Propiedad Pattern - Para Filtrar Archivos

Por defecto el control FileListbox visualiza todos los archivos del directorio indicado. Para listar archivos en forma filtrada, por ejemplo solo los Txt, solo archivos bmp, o un conjunto de extensiones : Solo Exe, dll y Bat por mencionar algunos tipos de ficheros, se utiliza la propiedad Pattern. A esta propiedad le debemos indicar la extensión o las extensiones a filtrar:

Por ejemplo para filtrar una sola extensión. En este caso se visualizarán solo archivos TXT

Colocar un control FileListBox llamado File1 y un control DirListBox llamado Dir1. Cuando selecciones una ruta en el Dir1, solo se listarán en el FileList los archivos que posean la extensión .txt

  1. Option Explicit  
  2.   
  3. '  -- Establecer el path del File al cambiar el Dir  
  4. Private Sub Dir1_Change()  
  5.     File1.Path = Dir1.Path  
  6. End Sub  
  7.   
  8. Private Sub Form_Load()  
  9.     ' -- Establecer el filtro ( propiedad Pattern )  
  10.     File1.Pattern = "*.txt"  
  11. End Sub  

 

 

Para filtrar varios archivos es de la misma forma que en el caso anterior, pero se debe establecer en la propiedad Pattern, separando las extensiones con un punto y coma ";".

Por ejemplo esto filtra y visualiza solo los archivos , Jpg, Bmp y Gif

File1,Pattern = "*.JPG;*.bMP;*.Gif"

 

En el ejemplo anterior se estableció la propiedad Pattern en tiempo de ejecución. Para establecerla en tiempo de diseño, se realiza desde la ventana de propiedades de Visual basic.

 

Propiedad FileName

Esta propiedad es muy importante y lo que hace es devolvernos el nombre del archivo seleccionado. Ojo, no la ruta entera (la propiedad path) , si no solo el nombre del archivo (el que se visualiza en el control).

El siguiente ejemplo, muestra un mensaje con el nombre del archivo seleccionado cuando hacemos Click en un archivo de la lista

  1. Option Explicit  
  2.   
  3.   
  4. Private Sub File1_Click()  
  5.     MsgBox File1.FileName, vbInformation, "Nombre del archivo"  
  6. End Sub  

 

Pero como obtener la ruta completa ?

Es muy simple , debemos unir la propiedad Path , mas la propiedad FileName

Colocar un botón y un FileListBox. Pegar el siguiente fragmento de código en el formulario

  1. Option Explicit  
  2.   
  3.   
  4. Private Sub Command1_Click()  
  5.           
  6.     Dim sPath As String  
  7.       
  8.     ' -- Guardar en a variable el path mas el nombre  
  9.     sPath = File1.Path & "" & File1.FileName  
  10.       
  11.     ' -- mostrar el path completo  
  12.     MsgBox sPath, vbInformation, "Nombre del archivo"  
  13.       
  14. End Sub  
  15.   
  16. Private Sub Form_Load()  
  17.     Command1.Caption = "Mostrar"  
  18. End Sub  

 

 

Propiedad ListCount y objeto List

Si necesitamos recorrer todos los ficheros de la lista, es igual que el ejemplo que se describió para el control Drive, es decir utilizando las propiedades ListCount y el objeto List.

Un ejemplo que no tiene ningún sentido práctico, pero que sirve para ver el funcionamiento de estas dos propiedades, consiste en recorrer todos los ficheros en un bucle For Next, y agregarlos a un control ListBox.

Colocar un botón llamado Command1, un ListBox llamado List1 y un FileListBox llamado File1 en el formulario principal del programa. Luego pegar el siguiente código

 

  1. Option Explicit  
  2.   
  3.   
  4. '  -- Botón para recorrer la lista en un bucle y agregar cada  
  5. '    -- archivo al listbox  
  6. Private Sub Command1_Click()  
  7.       
  8.     ' -- Eliminar el listado antes de agregar  
  9.     List1.Clear  
  10.       
  11.     ' -- Recorrer  
  12.     Dim i As Integer  
  13.   
  14.     For i = 0 To File1.ListCount - 1  
  15.         List1.AddItem File1.List(i)  
  16.     Next  
  17.       
  18. End Sub  
  19.   
  20. Private Sub Form_Load()  
  21.     Command1.Caption = "Pasar archivos al ListBox"  
  22. End Sub  

 

 

System, Hidden, Normal, Archive - Propiedades

Estas propiedades permiten indicarle al control, si debe mostrar o no, archivos de acuerdo a sus atributos. Son cuatro propiedades

  • System : Determina si un control FileListBox muestra archivos con el atributo Sistema
  • Hidden : Determina si un control FileListBox muestra archivos con el atributo Oculto.
  • Archive : Determina si un control FileListBox muestra los archivos con el atributo Modificado
  • ReadOnly : Devuelve o establece un valor que determina si se muestran o no en la lista de archivos los archivos con el atributo Sólo lectura.

 

Eventos

Además de los eventos principales, como es el DobleClick, GotFocus, LostFocus y otros eventos comunes que poseen la gran mayoría de controles de vb, el FileListBox posee dos eventos exclusivos, ellos son :

  • PathChange : Ocurre al cambiar la ruta de acceso estableciendo en el código las propiedades FileName o Path.
  • PatternChange : Ocurre al cambiar el patrón de lista de archivos, como *.*, mediante FileName o Pattern en el código

Estos eventos le sirven al programador , en algunos casos que necesite saber cuando cambia alguna de las propiedades, y poder realizar alguna acción.

Ejemplo . Colocar dos botones y un File1

  1. Option Explicit  
  2.   
  3.   
  4. Private Sub Command1_Click()  
  5.     ' -- Cambiar la ruta del File  
  6.     File1.Path = "c:"  
  7. End Sub  
  8.   
  9. Private Sub Command2_Click()  
  10.     ' -- Cambiar el Pattern  
  11.     File1.Pattern = "*.jpg"  
  12. End Sub  
  13.   
  14. Private Sub File1_PathChange()  
  15.     MsgBox "Se ejecutó el evento PathChange", vbInformation  
  16. End Sub  
  17.   
  18. Private Sub File1_PatternChange()  
  19.     MsgBox "Se ejecutó el evento PatternChange", vbInformation  
  20. End Sub  
  21.   
  22. Private Sub Form_Load()  
  23.     Command1.Caption = "Cambiar Path"  
  24.     Command2.Caption = "Cambiar Pattern"  
  25. End Sub  

 

 


 

Ejemplo utilizando los 3 controles vistos para navegar por las unidades y directorios del sistema y visualizar archivos bmp en un control image

Colocar un control File1, un Dir1 y un Drive1 y un control Image como está en la imagen:

Vista previa del ejemplo para utilizar en conjunto los controles Filelistbox, DriveListBox y DirListBox

 

Lo que hace el ejemplo es cada vez que seleccionemos una unidad diferente en el control Drive se actualiza y muestra los directorios de la misma. A su vez al cambiar de directorio en el Dir1 se actualiza el control File1 mostrando los archivos de dicha carperta, pero solo los bmp, utilizando el filtrado con la propiedad Pattern. Luego, Al seleccionar un archivo bmp en el FileListBox, se cargará la imagen en el control Image utilizando el método LoadPicture

Pegar el código del ejemplo en un formulario:

  1. Option Explicit  
  2.   
  3.   
  4. Private Sub Dir1_Change()  
  5.     ' -- Cada vez que cambiamos de directorio, le indicamos al  
  6.     ' -- control FileListBox que muestre los archivos de ese directorio  
  7.     File1.Path = Dir1.Path  
  8. End Sub  
  9. Private Sub Drive1_Change()  
  10.     On Error GoTo error_handler  
  11.       
  12.     ' -- Cada vez que cambiamos de unidad, indicamos al control  
  13.     ' -- Dir Que muestre los directorios de esa unidad  
  14.     Dir1.Path = Drive1.Drive  
  15.       
  16.     ' -- Rutina de error en caso de que se seleccione una unidad no disponible  
  17.     ' -- O que se produzca cualquier otro tipo de error  
  18.     Exit Sub  
  19. error_handler:  
  20.     MsgBox Err.Description, vbCritical  
  21.       
  22. End Sub  
  23.   
  24. Private Sub File1_Click()  
  25.     On Error GoTo error_handler  
  26.   
  27.     ' -- Mostramos en la barra de título del formulario el nombre del  
  28.     ' -- archivo seleccionado en el control File1  
  29.     Me.Caption = "Archivo Actual: " & File1.FileName  
  30.     Image1.Picture = LoadPicture(File1.Path & "" & File1.FileName)  
  31.       
  32.     ' -- Rutina de error en caso de que no se pueda cargar la imagen en el Image  
  33.     Exit Sub  
  34. error_handler:  
  35.     MsgBox Err.Description, vbCritical  
  36. End Sub  
  37.   
  38. Private Sub Form_Load()  
  39.     ' -- Para indicarle al control File que liste y filtre solo Bmp  
  40.     File1.Pattern = "*.bmp"  
  41.     ' -- Para reajustar la imagen en el control image  
  42.     Image1.Stretch = True  
  43. End Sub  

 

 
  ProgramasVb Copyright. 2011-2012 All Right Reserved  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis