Sección de tutoriales y manuales vb

DriveListBox, DirListBox y FileListBox - controles para manipular unidades, archivos y directorios

Volver al índice



 

 

 

Controles de visual basic para trabajar con las unidades del sistema, los archivos y directorios

 

 

 

 

 

-- -- Índice

 

 

 

 

 


DriveListBox - Propiedades, métodos y eventos

 

Descripción

El Control DriveListBox es una especie de comboBox o lista desplegable que nos muestra las unidades que tengamos en la pc

Vista previa del control Drive List Box de Visual basic que permite visualizar las unidades del sistema

 

Propiedades

Propiedad Drive

La propiedad mas importante de este control se llama Drive.

Esta propiedad nos retorna o devuelve la unidad que se encuentra seleccionada en el mismo.

Por ejemplo al ejecutar el siguiente fragmento de código, muestra la unidad mediante un cuadro de mensaje

Colocar el código en un formulario, e insertar un DriveListBox

ListCount y objeto List

Otra propiedad para saber la cantidad de unidades que tiene la lista es la propiedad ListCount y conjuntamente con el objeto List podemos recorrer la lista mediante un bucle, por ejemplo desde la primera unidad hasta la última en la lista, similar a recorrer los elementos de un control de lista como los ListBox y los ComboBox.

El ejemplo siguiente hace lo anteriormente dicho en un bucle For, y las va mostrando mediante un Mensaje:

Colocar un control Drive1 en el formulario y un botón.

Pegar el siguiente código

 

Otras propiedades

Las demás propiedades son comunes a la mayoría de los demás controles, por ejemplo:

 

A continuación un ejemplo para utilizar la propiedad Width. Muchas veces es necesario, en tiempo de ejecución, cambiar y adaptar la anchura del control, por ejemplo supongamos que al redimensionar y cambiar el ancho del formulario, quisiéramos adaptar el ancho del Drive al de la ventana de formulario, entonces podemos modificar la propiedad Width dentro del evento resize del Form.

Colocar un Drive1. Pegar el siguiente código. Luego maximizar, achicar, y cambiar el tamaño de la ventana para ver como se adapta a las dimensiones de la misma.

 

Importante

El código anterior contiene un error que es el siguiente. Si minimizas la pantalla de formulario, visual basic te mostrará este error:

Este error ocurre por que justo en el momento de minimizar el form, la propiedad ScaleWidth del Formulario contiene el valor 0. entonces al ejecutar la línea

Drive1.Width = Me.ScaleWidth - 20

Se está asignando como nuevo ancho del Drive, el valor ( 0 - 20 ) , es decir el valor -20. Y En visual basic, no se puede establecer un valor negativo a la propiedad Width y Height de ningún tipo de control.

Para solucionar esto, puede haber varias formas, por ejemplo podríamos utilizar un bloque If que compruebe que el valor a asignar sea mayor a 0.

Otra solución posible sería, dentro del evento Resize, averiguar si se está intentando minimizar la ventana usando la propiedad WindowState

WindowState: Devuelve o establece en tiempo de ejecución el estado visual de una ventana de formulario. Si está maximizada, minimizada o en estado normal.

Al ejecutar el siguiente ejemplo, podés comprobar que no se genera error, ya que la instrucción If, al detectar que se minimiza el formulario, sale de la rutina para no ejecutar el bloque de código que cambia el ancho del control, y de esta manera evitar el error.

 

Eventos

El evento mas importante del control Drive es el evento Change.

Este evento se dispara o ejecuta cada vez que el control cambia la unidad, es decir cuando el usuario selecciona de la lista una unidad diferente. Para probarlo como funciona, un simple ejemplo:

Pegar este código, y cuando se seleccione una unidad, se producirá el evento Change y mostrará la unidad seleccionada, consultando la propiedad Drive

Colocar un Drive1 en el formulario principal.

 


DirListBox - Propiedades, métodos y eventos

 

Descripción y propiedades:

Permite visualizar los directorios de una unidad determinada.

Control DirListBox de Visual Basic

Propiedad Path

La propiedad mas importante se llama Path. A esta propiedad se le debe indicar la ruta para que cargue la lista de directorios

Por ejemplo, para poder visualizar las carpetas, cuando seleccionamos una unidad en un control Drive, se haría de la siguiente forma:

Colocar un control Drive1 y un control Dir1 y pegar el siguiente código en el formulario:

 

Si ejecutás el ejemplo anterior, podés ver que al cambiar de unidad en el control Drive se despliegan los directorios en el control Dir1. Pero también seguramente observaste que si seleccionás por ejemplo una unidad que no se encuentra disponible, como por ejemplo la disquetera, unidad de CD/DVD, y esta no contiene un diskette o CD, o se encuentra averiada, o no lo puede leer por algún otro motivo, se producirá un error 68 en tiempo de ejecución: "El dispositivo no está listo".

Para evitar esto podemos utilizar una simple rutina de error como la siguiente para solucionar el problema mediante un controlador de error.

 

... de esta manera controlamos el error 68 mostrando un mensaje, y con la instrucción Resume Next, le decimos a vb que prosiga la ejecución del programa. Nota : Si no quisiéramos continuar la ejecución de la línea siguiente a la que produjo el error, simplemente podemos quitar la instrucción Resume Next.

 

DirListBox no enlazado a un DriveListBox

También a diferencia del ejemplo anterior, en muchos casos podríamos utilizar un Dir1 sin un control Drive.

Entonces para cambiar la propiedad Path del control DirListBox sin usar el control Drive, simplemente debemos pasarle la letra de la unidad o cualquier ruta válida que queramos a la propiedad Path, por ejemplo de esta manera:

Colocar dos botones y un Dir1. Pegar el siguiente código en el formulario

Importante

Al igual que en el código anterior, donde se producía un error al intentar acceder a una unidad no disponible, si se le pasa a la propiedad path del Dirlistbox, una ruta que no existe, el programa generará un error en tiempo de ejecución. El error es el siguiente : Error de ruta de acceso

Para solucionarlo, podemos implementar una rutina o controlador de error , que verifique el numero 76. Si el error es el 76, entonces mostramos al usuario un mensaje para que sepa que la ruta indicada no es válida, y de esta forma, no se caiga el programa.

Este ejemplo demuestra lo dicho anteriormente

Colocar un botón y un Dir1. Al presionar el botón, se desplegará un cuadro de diálogo InputBox para escribir el path, y como demostración deberás escribir una ruta no válida para generar el error. Luego se mostrará un mensaje de información de que el path no es válido.

 

Propiedad ListCount, y objeto List

Con ListCount y el objeto List, podemos acceder al contenido actualmente cargado en el Dir, es decir a los directorios. Para recorrer todo el contenido , se debe utilizar un bucle For Next. Por ejemplo lo siguiente, recorre todo el contenido del control, y crea un archivo de texto con las rutas. El archivo de texto se creará en una unidad c:\ con el nombre 'Rutas.txt'

 

Nota Las demás propiedades, son similares a la de los demás controles.

 

Eventos

Al igual que el control Drive, el control Dir tiene un evento que es el mas importantes llamado Change, y que se disparará o ejecutará cada vez que el control Dir cambie la ruta, es decir la propiedad Path.

El siguiente ejemplo muestra un mensaje cada vez que seleccionamos un directorio diferente en el control.

Mostrar la cantidad de carpetas y directorios

Si quisiéramos saber la cantidad de directorios que muestra el control Dir, podemos usar la propiedad ListCount.

Ejemplo:

 

 


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

 

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 :

 

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

 

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

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

 

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

 

 

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

 

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 :

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

 


 

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:

 

En este otro enlace, hay otro ejemplo similar a este último, relacionado con estos tres controles.

Cargar una imagen centrada en un Picture


Volver al índice

 

 


Buscar en Recursos vb