Foro de elhacker.net

Programación => 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
  1. Private Sub Command1_Click()
  2. If MsgBox("Texto", vbQuestion + vbYesNo, "Título") = vbYes Then
  3.    MsgBox "has pulsado SI"
  4. Else
  5.    MsgBox "Has pulsado NO"
  6. End If
  7. End Sub
  8.  

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
  1. Private Sub Form_Unload(Cancel As Integer)
  2. If MsgBox("Desea Salir", vbQuestion + vbYesNo, "Título") = vbYes Then
  3.    Cancel = 0
  4. Else
  5.    Cancel = 1
  6. End If
  7. 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
  1. Respuesta = MsgBox("Hola?", vbYesNo + vbExclamation, "titulo")
  2. If Respuesta = vbYes Then
  3. 'pulsastes SI
  4. elseif Respuesta = vbNo Then
  5. ' pulsastes no
  6. end if
  7.  


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:

Código:
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.