Dudas en VB6

Iniciado por Bb-7, 2 Marzo 2008, 14:28 PM

0 Miembros y 1 Visitante están viendo este tema.

Bb-7

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?


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.





Spider-Net

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!!

Mad Antrax

Código (vb) [Seleccionar]
Respuesta = MsgBox("Hola?", vbYesNo + vbExclamation, "titulo")
If Respuesta = vbYes Then
'pulsastes SI
elseif Respuesta = vbNo Then
' pulsastes no
end if
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

cassiani

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!

Bb-7

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.