Visual Basic - drivelistbox

Life is soft - evento anual de software empresarial
 
Vista:

drivelistbox

Publicado por Daniel (1 intervención) el 01/04/2006 20:53:10
hola tengo un pequeño grn problema y es con drivelistbox
resulta que al ejecutarlo y escoger una unidad que no existe como por ejemplo un cd se cae el programa, como puedo solucionar este problema...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Atrapa el error

Publicado por Zoto (55 intervenciones) el 01/04/2006 21:32:55
Hola, Daniel.

Lo que pides es tan fácil que suceda como sencillo es evitarlo.
Como bien dices, si mediante el DriveListBox seleccionas una unidad que está dañada o no es accesible (Unidad de CD sin CD, disquetera sin disquete, etc.), nos encontramos ante un error que cierra el programa.

Para solucionar esto, debemos atrapar el error con una sentencia On Error GoTo,
estableciendo una etiqueta en la que mostraremos un mensaje de error o otra notificación al usuario.
Aquí te muestro un ejemplo de como sería.
En este caso se intenta enlazar un DirListBox (lista de directorios) con un DriveListBox (lista de unidades).
Este es el código que pertenece al evento Change del DriveListBox, llamado en nuestro caso Drive1. El control DirListBox, se llama Dir1.

Mira el código:

'----------------------------------------
'CÓDIGO
'----------------------------------------

Private Sub Drive1_Change()
On Error GoTo DRIVE_ERROR 'En caso de error, se dirige hacia la etiqueta DRIVE_ERROR
Dir1.Path = Drive1.Drive 'Se aplica la propiedad Drive del DriveListBox a la propiedad Path de un control DirListBox
Exit Sub 'No se ha producido ningún error, con lo cual abandonamos el procedimiento
DRIVE_ERROR: 'Etiqueta de error
'Se muestra una MsgBox informando del error de la Unidad seleccionada
MsgBox "La unidad seleccionada no se encuentra disponible o está dañada." & vbCrLf & "Por favor, seleccione otra distinta." & vbCrLf & "Número de error: " & Err.Number & vbCrLf & "Descripción: " & Err.Description, vbCritical + vbOKOnly, "Error de unidad nº " & Err.Number
Drive1.ListIndex = -1 'Se establece en nulo el elemento seleccionado del DriveListBox
End Sub

'----------------------------------------
'CÓDIGO
'----------------------------------------

Espero que este ejemplo te ayude a sortear este obstáculo.
Como ves, utilizar sentencias de error no debe pasarse por alto para obtener programas 100% depurados.
Hasta otra,

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar