• Miércoles 6 de Noviembre de 2024, 04:25

Autor Tema:  Re: Cancelar un proceso  (Leído 1328 veces)

Cyclop

  • Miembro MUY activo
  • ***
  • Mensajes: 323
    • Ver Perfil
    • http://www.geocities.com/icotext/spanish/
Re: Cancelar un proceso
« en: Miércoles 30 de Julio de 2003, 01:54 »
0
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
Icotext Evolution v0.5 para los amantes del ASCII Art
http]

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Cancelar un proceso
« Respuesta #1 en: Miércoles 30 de Julio de 2003, 08:47 »
0
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...

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Cancelar un proceso
« Respuesta #2 en: Miércoles 30 de Julio de 2003, 09:03 »
0
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.