SoloCodigo
		Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: pacegar en Martes 16 de Diciembre de 2003, 17:52
		
			
			- 
				Me gustaría poder deshabilitar la "X" de un formulario padre de mi aplicacion, para que, por error, no se pueda cerrar al pulsarla... o por lo menos mostrar un mensaje de que si se desea cerrar realmente.
 
 Gracias de antemano...
 :blink:
- 
				Hola pacegar.
 
 Esta es una pregunta recurrente...
 
 Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
 If UnloadMode = 0 Then
 If vbCancel = MsgBox( "¿Desea realmente salir?",vbOkCancel,"Salir") = vbCancel Then Cancel = 1
 End If
 End Sub
 
 Suerte.
- 
				No logro que me funcione...
 
 Al pulsar sobre la "X" cierto que entra en MDIForm_QueryUnload pero luego me salta a MDIForm_Unload y me cierra la aplicacion, sin tener en cuenta lo que haya contestado antes en la pregunta de salir si o no...
- 
				Fíjate en el valor de UnloadMode, indica el motivo de descarga del formulario:
 
 0 - El usuario a pulsado en la X.
 1 - El formulario se ha descargado por código (Unload Objeto).
 2 - Windows se está cerrando.
 3 - Se cerró desde el administrador de tareas.
 4 - El form MDI Child se cierra porque su 'padre' se cierra.
 5 - Un form se cierra porque su formulario propietario se cierra.
 
 Cuando detectes que UnloadMode = 0 (es igual a cero), entonces das al parámetro Cancel que se pasa por referencia el valor 1, cancelando la operación de descarga.
 
 Te aseguro que esto funciona así en cualquier plataforma o versión de windows que utilices.
 
 De todas formas me acabo de fijar en un gazapo en el código que te escribí, seguro que no funciona por esto:
 
 Don dije...
 If vbCancel = MsgBox( "¿Desea realmente salir?",vbOkCancel,"Salir") = vbCancel  Then
 
 Debería decir...
 If MsgBox( "¿Desea realmente salir?",vbOkCancel,"Salir") = vbCancel Then
 
 Pero hoooombre...hay que se fijar maaaaás.
 
 Chao.
- 
				Ok, si de ese "gazapo" ya me habia percatado...
 
 Lo he vuelto a probar y ya me funciona... No entiendo pq antes no funcionaba.
 Gracias!
 
 :kicking:
- 
				Cuando des clic en la X  aparecera un mensaje cerrar si o no
 
 yo coloco en el formulario que deseo cerrar el sigte codigo:
 
 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
 Dim Msg ' Declara la variable.
 If UnloadMode > 0 Then
 ' Si sale de la aplicación.
 Msg = "¿Realmente desea salir de la aplicación?"
 Else
 ' Si sólo se cierra el formulario.
 Msg = "¿Realmente desea cerrar el formulario?"
 End If
 ' Si el usuario hace clic en el botón No, se detiene QueryUnload.
 If MsgBox(Msg, vbQuestion + vbYesNo, Me.Caption) = vbNo Then Cancel = True
 End Sub
 
 solo copia y pega