ProgramasVb6
  DirListBox
 

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:

  1. Option Explicit  
  2.   
  3. Private Sub Drive1_Change()  
  4.   
  5.     ' -- Establecer la ruta del Dir1, de acuerdo a  
  6.     ' -- la unidad seleccionada en el Drive  
  7.     Dir1.Path = Drive1.Drive  
  8.   
  9. End Sub  
  10.   
  11. Private Sub Form_Load()  
  12.     MsgBox "Cambia la unidad para que el Dir1 actualice el la propiedad Path"  
  13. End Sub  

 

 

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.

  1. Option Explicit  
  2.   
  3. Private Sub Drive1_Change()  
  4.   
  5. On Error GoTo MensajeError  
  6.       
  7.     ' -- Mostramos la lista de directorios pasandole la propiedad Drive  
  8.     Dir1.Path = Drive1.Drive  
  9.   
  10.   
  11. Exit Sub  
  12. ' -- Rutina de error - Este bloque se ejecutará solo cuando se produzca un fallo  
  13. MensajeError:  
  14.   
  15. ' -- Si ocurre un error, entonces Primero comprobamos que es el 68  
  16. ' -- Si es el 68 ( unidad no disponible), mostramos un mensaje al usuario.  
  17. ' -- y proseguimos la ejecución del código mediante la instrucción Resume Next  
  18. If Err.Number = 68 Then  
  19.     MsgBox "La unidad seleccionada no está disponible", vbInformation  
  20.     Resume Next  
  21. Else  
  22. ' -- Si es otro error, también mostramos otro mensaje  
  23.     MsgBox Err.Description, vbCritical, "Otro error"  
  24. End If  
  25.   
  26. End Sub  
  27.   
  28. Private Sub Form_Load()  
  29.     MsgBox "Selecciona una unidad CD/DVD sin ningún CD/DVD"  
  30. End Sub  

 

 

... 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

  1. Option Explicit  
  2.   
  3. Private Sub Command1_Click()  
  4.     Dir1.Path = "c:"  
  5. End Sub  
  6.   
  7. Private Sub Command2_Click()  
  8.     Dir1.Path = "c:windows"  
  9. End Sub  
  10.   
  11. Private Sub Form_Load()  
  12.     Command1.Caption = "c:"  
  13.     Command2.Caption = "c:windows"  
  14. End Sub  

 

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.

  1. Option Explicit  
  2.   
  3. Private Sub Command1_Click()  
  4.           
  5.     On Error GoTo error_handler  
  6.       
  7.     Dim sRuta As String  
  8.       
  9.     ' -- Abrir un diálogo para escribir el path  
  10.     sRuta = InputBox("Escribir una ruta que no exista en la pc")  
  11.       
  12.     ' -- Si sRuta no es válido, se producirá el error y visual basic  
  13.     ' -- saltará al bloque error_handler, y al comprobar el numero de error 76  
  14.     ' -- Le mostrará al usuario que hubo un error en la ruta de acceso  
  15.     Dir1.Path = sRuta  
  16.   
  17.   
  18. Exit Sub  
  19.   
  20. ' -- Rutina de error  
  21. error_handler:  
  22. If Err.Number = 76 Then  
  23.    MsgBox "La ruta seleccionada no es válida, compruebe que la haya escrito correctamente", vbCritical  
  24. Else  
  25.    MsgBox Err.Description, vbCritical  
  26. End If  
  27. End Sub  
  28.   
  29.   
  30. Private Sub Form_Load()  
  31.     Command1.Caption = "Escribir ruta"  
  32. End Sub  

 

 

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'

  1. Option Explicit  
  2.   
  3.   
  4. Private Sub Command1_Click()  
  5.       
  6.     On Error GoTo error_handler  
  7.     ' -- Crear archivo  
  8.     Dim f As Integer  
  9.     f = FreeFile  
  10.     Open "c:rutas.txt" For Output As #1  
  11.       
  12.     ' -- recorrer el control  
  13.     Dim i As Integer  
  14.     For i = 0 To Dir1.ListCount - 1  
  15.         ' -- Escribir en el archivo el path  
  16.         Print #1, Dir1.List(i)  
  17.     Next  
  18.     ' -- Cerrar el archivo abierto  
  19.     Close #f  
  20.       
  21.     ' -- Fin  
  22.     MsgBox "Archivo guardado en: c:", vbInformation  
  23.       
  24.     ' -- Rutina de error  
  25.     Exit Sub  
  26. error_handler:  
  27.     MsgBox Err.Description, vbCritical, "error al crear el archivo"  
  28. End Sub  
  29.   
  30. Private Sub Form_Load()  
  31.     Command1.Caption = "Guardar rutas en archivo de texto"  
  32. End Sub  

 

 

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.

  1. Option Explicit  
  2.   
  3. Private Sub Dir1_Change()  
  4.     MsgBox Dir1.Path, vbInformation  
  5. End Sub  

 

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:

  1. Option Explicit  
  2.   
  3. Private Sub Dir1_Change()  
  4.     MsgBox "El directorio seleccionado tiene: " & Dir1.ListCount & " directorios"  
  5. 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