SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Cyclop en Miércoles 30 de Julio de 2003, 01:54
-
Hola de nuevo, tengo un formulario que contiene un progressbar y un boton cancelar, como puedo hacer para que cuando presione cancelar se salgue automaticamente del Do While ... ?
ejemplo
frmProg.Show
nCounter = 0
Do While Not rsMov.EOF
nCounter = nCounter + 1
frmProg.Counter = nCounter
' Counter es una propiedad que cada ves que le asignan un valor, incrementa el progressbar
.......
Loop
Unload frmProg
Salu2
Salu2:D
-
Declara una variable pública de tipo Boolean en 'frmProg'. En el evento 'Click' del botón de cancelar asigna el valor TRUE a la variable:
Public indCancel as Boolean
Private Sub BotonCancelar_Click
indCancel = True
End Sub
Luego en el bucle introduce la siguiente línea:
If frmProg.indCancel Then Exit Do
Ten en cuenta que si al final no estableces frmProg = Nothing y frmProg está declarado a nivel de módulo, si intentas repetir el proceso, indCancel seguirá siendo TRUE, por lo que el bucle se terminará en la primera iteracción. Si es tu caso, haz lo siguiente:
If frmProg.indCancel Then
frmProg.indCancel = False
Exit Do
End If
También podrías incluir 'indCancel = False' en el evento Unload de frmProg.
Espero que te vaya bien...
-
En el ejemplo de antes hay un pequeño , pero importante detalle. Es necesario especificar una instrucción 'DoEvents' en el bucle, preferiblemente antes de hacer la pregunta por la variable:
...
DoEvents
If frmProg.indCancel Then Exit Do
...
Si no hacemos esto el evento Click del botón malamente se podrá desencadenar hasta que acabe el bucle.