Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Bb-7 en 2 Marzo 2008, 14:28 PM

Título: Dudas en VB6
Publicado por: Bb-7 en 2 Marzo 2008, 14:28 PM
Saludos a todos.

Tengo dos dudas sobre Visual Basic:
1. Cuando pongo un MsgBox de pregunta con dos botones, sí ó no ("Texto", vbQuestion+vbYesNo, "Título"), cuando le doy al "sí" pasa a la siguiente acción, pero cuando le doy al "no" hace absolutamente lo mismo. Es decir, ¿cómo puedo hacer para que el MsgBox pueda distinguir entre si le doy al "sí" o si le doy al "no", y que según qué botón pulse haga una cosa u otra?
(http://img223.imageshack.us/img223/5676/captura1cw9.jpg)

2. Cuando le doy a la "X" o a Alt+F4 para cerrar el programa, ¿Cómo hago para que el programa antes de cerrarse directamente haga "algo" como lanzar un mensaje diciendo si quieres salir o no, o guardar algún dato con el que se trabajaba para no perderlo, etc.?

Gracias de antemano.
Título: Re: Dudas en VB6
Publicado por: Spider-Net en 2 Marzo 2008, 14:54 PM
Hola, tus dudas son fáciles de solucionar.. verás..

El MsgBox con VbQuestion+vbyesNo lo que hace es devolver True si pulsas en sí y False si pulsas en No, es como una variable Booleana por lo tanto si quieres que haga una cosa u otra dependiendo que botón pulse sólo tienes que meter el msgbox en un if que compare la respuesta con vbyes o vbno.

Ejemplo:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
If MsgBox("Texto", vbQuestion + vbYesNo, "Título") = vbYes Then
    MsgBox "has pulsado SI"
Else
    MsgBox "Has pulsado NO"
End If
End Sub


Para que te pregunte al cerrar el programa tienes que colocar tu código en Form_Unload. La función Form_Unload lleva un parámetro Cancel con el que podrás decidir si cerrar o no el formulario, lo pones a 1 si quieres impedir que se cierre tu programa y a 0 en caso contrario, es más claro con un ejemplo.

Ejemplo:

Código (vb) [Seleccionar]
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Desea Salir", vbQuestion + vbYesNo, "Título") = vbYes Then
    Cancel = 0
Else
    Cancel = 1
End If
End Sub


Espero que te sea de ayuda,

Saludos!!
Título: Re: Dudas en VB6
Publicado por: Mad Antrax en 2 Marzo 2008, 16:51 PM
Código (vb) [Seleccionar]
Respuesta = MsgBox("Hola?", vbYesNo + vbExclamation, "titulo")
If Respuesta = vbYes Then
'pulsastes SI
elseif Respuesta = vbNo Then
' pulsastes no
end if
Título: Re: Dudas en VB6
Publicado por: cassiani en 2 Marzo 2008, 17:21 PM
Cancel siempre va a ser igual a cero una vez entre en el "EVENTO Unload", solo cambiara si se lo indicamos, la comparación deberia hacerse con vbNo en lugar de vbYes. Mira este ejemplo:

Private Sub Form_Unload(Cancel As Integer)
    Cancel = (MsgBox("¿Realmente desea Salir?", vbQuestion + vbYesNo, _
                   "Esta intentando salir del programa") = vbNo)
End Sub


¡S4lu2!
Título: Re: Dudas en VB6
Publicado por: Bb-7 en 2 Marzo 2008, 22:21 PM
Pues muchas gracias a todos.
Lo del MsgBox, sospechaba que sería algo así, por lo que hice pruebas, pero claro, no funcionaban. Pero de lo otro no tení ni idea

Gracias.