Visual Basic - Salir de un form

Life is soft - evento anual de software empresarial
 
Vista:

Salir de un form

Publicado por Carlos (66 intervenciones) el 08/08/2007 19:36:38
antes habia colocado la duda de bloquear el Alt+F4 al final alguien me dio una solucion... pero pasa lo siguiente. tengo un boton de salida, ese me funciona a perfección, pero pasa que en mi barra de menus tambien hay la opcion de salirce del sistema, no funciona en ambos casos el boton y en el menu tengo la misma linea de codigo esta:

If MsgBox("¿DESEA SALIR?", vbQuestion + vbYesNo, ETQ) = vbYes Then End

ahora no se si lo que hice en el Form_QueryUnload afecto esto!! si algo les ayuda en el Form_QueryUnload esta asi

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If Cancel = 0 Then Cancel = 1
If UnloadMode = 0 Then UnloadMode = 1
End Sub

de antemano gracias por su ayuda!
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

RE:Salir de un form

Publicado por Diego Fernando M. (80 intervenciones) el 08/08/2007 20:08:35
If UnloadMode = vbFormControlMenu Then
Cancel = True
If MsgBox("¿DESEA SALIR?", vbQuestion + vbYesNo, ETQ) = vbYes Then End
End If
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

RE:Salir de un form

Publicado por Fernando (10 intervenciones) el 09/08/2007 01:10:53
Hola Carlos.
Mirá los eventos conviene siempre atenderlos en los controladores adecuados así tenés módulos menos acoplados.
En este caso, los eventos de cierre del formulario conviene atenderlos en el QueryUnload que es el controlador de tales eventos. En el mismo debés de incluir el If y el MsgBox que pide la confirmación del usuario.
Incluso el código que escribiste en tal controlador no es correcto.
El parámetro Cancel, determina si en definitiva se cerrará o nó el formulario los valores posibles son:

Cancel = False (el formulario se descarga)
Cancel = True (el formulario no se descarga)

También podés usar 0 en lugar de False (es lo mismo) o cualquier otro nro en lugar de True (es lo mismo). Esto se debe a que en realidad Tanto True como False son un tipo de datos de enumeración.
El tema es que si el usuario responde que no quiere terminar entonces ahí deberías poner Cancel=True y si el usuario quiere terminar entonces ahí deberías porner Cancel=False.
El UnloadMode es un parámetro que sirve para detectar mediante qué método estás cerrando el formulario y no debés cambiarlo, a lo sumo comprobarlo.
Otra cosa que no te aconsejo es el uso del End. Es abrupto y en caso que por ejemplo tengas servidores ActiveX usados en tu aplicación te puede traer problemas.
Espero que mi explicación te dé una mano.
Saludos.
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

RE:Salir de un form

Publicado por Carlos (66 intervenciones) el 09/08/2007 18:47:12
Por lo que lei entonces me quedaria asi:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If MsgBox("¿DESEA SALIR?", vbQuestion + vbYesNo, ETQ) <> vbYes Then Cancel = True
End Sub
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