SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Cyclop en Miércoles 30 de Julio de 2003, 01:54

Título: Re: Cancelar un proceso
Publicado 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
Título: Re: Cancelar un proceso
Publicado por: Brroz en Miércoles 30 de Julio de 2003, 08:47
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...
Título: Cancelar un proceso
Publicado por: Brroz en Miércoles 30 de Julio de 2003, 09:03
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.