Visual Basic - Boton Cerrar

Life is soft - evento anual de software empresarial
 
Vista:

Boton Cerrar

Publicado por Asun (43 intervenciones) el 19/08/2010 11:39:39
Hola a todo@s.
Quiero anular el boton de Cerrar[ X ] de mi formulario principal, para que unicamente se pueda cerrar de un botonCommand del mismo.

Hago esto:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
End If
End Sub

...pues NO lo anula. Y tampoco con queryunload

Falta algo? Sobra algo?....Alguien me puede ayudar???

GRACIAS
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:Boton Cerrar

Publicado por Jimmy T (134 intervenciones) el 19/08/2010 16:46:58
Yo lo que hago es que manejo una variable global dentro del formulario que se llama salir, es de tipo Boolean y se pone en True solo cuando presiono el boton de salir pero por otro medio la variable siempre estará en False asi que cuando llega al evento de QueryUnload del Formulario ( en este caso QueryClose ¿¿pero ese QueryClose de que tipo de formulario es??) ella preguntara por la variable:

Private salir As Boolean

Private Sub btnSalir_Click()
salir = True
End
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Not salir Then
Cancel = True
End If
End Sub

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:Boton Cerrar

Publicado por Asun (43 intervenciones) el 19/08/2010 18:31:52
Hola Jimmy.

Bueno...., esto no me va, pero dejalo.

Estaba intentando "enriquezer" un proyecto simplon que he acabado hace unos dias. Si el boton funciona normalmente, ya lo tenia solucionado, pero COPIE de este foro, el codigo que pongo en la pregunta y que contestaste tu mismo hace mas de dos años, esperando que funcionase a la primera, ya que al no tener mucha experiencia, meterme en estos jardines, no me interesa, ya que me vuelvo loca, y mareo a la gente.
Lo olvido, y ya esta.

GRACIAS Jimmy.
Saludos.

Asun.
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:Boton Cerrar

Publicado por Jimmy T (134 intervenciones) el 19/08/2010 19:59:49
Hola Asun no me había fijado que eras tu jaja :P, pero bueno tampoco recuerdo haber contestado esa pregunta...

Pero = ahi estamos si necesitas algo, que a todos hay cosas que no se nos dan pero no por eso tenemos que dejar de insistir ;)

Saludos Asun
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:Boton Cerrar

Publicado por jesus espinosa (1 intervención) el 06/03/2015 21:26:55
AGRADEZCO TU CODIGO ME SIRVIO DE MUCHO

GRACIAS
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:Boton Cerrar

Publicado por Jorge (56 intervenciones) el 19/08/2010 18:46:35
yo lo hago usando por API de esta forma:

primero creas un modulo (con el nombre que quieras)
en ese modulo copias este codigo:

'***** INICIO DEL MODULO *******
'****************************************************
'********** MODIFICAR BOTON CERRAR VENTANA **********
'****************************************************
Public Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Public Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" _
(ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long, ByVal wIDNewItem As Long, _
ByVal lpString As Any) As Long
Public Declare Function DrawMenuBar Lib "user32" _
(ByVal hWnd As Long) As Long
'
Public Const MF_BYCOMMAND = &H0&
Public Const MF_ENABLED = &H0&
Public Const MF_GRAYED = &H1&
'Private Const MF_DISABLED = &H2&
'
Public Const SC_CLOSE = &HF060&
'****************************************************
'****************************************************
'****************************************************
'
'*********************************************************
'************* HABILITAR/DESHABILITAR CERRAR *************
'*********************************************************
'** esta parte es opcional ponerlo en el modulo, **
'** se puede poner en el load_form que quieras **
'** luego explicare porque **
'*********************************************************
Public Sub cmdDeshabilitar_Click()
' Deshabilitar el botón de cerrar el formulario
Dim hMenu As Long
'
hMenu = GetSystemMenu(hWnd, 0)
' Deshabilitar el menú cerrar del formulario
Call ModifyMenu(hMenu, SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED, -10, "Close")
'
' Si esta llamada se hace dentro del Form_Load,
' no es necesario redibujar los menús
' Redibujar los menús
Call DrawMenuBar(hWnd)
'
End Sub
'
Public Sub cmdHabilitar_Click()
' Habilitar el botón de cerrar el formulario
Dim hMenu As Long
'
hMenu = GetSystemMenu(hWnd, 0)
' Esto lo habilita, pero sigue en gris
Call ModifyMenu(hMenu, -10, MF_BYCOMMAND Or MF_ENABLED, SC_CLOSE, "Close")
' Redibujar los menús
Call DrawMenuBar(hWnd)
'
End Sub
'*********************************************************
'*********************************************************
'*********************************************************
'******* FIN DEL MODULO ************

ahora en cualquier FORM que tengas o MDIForm en la parte del load pones lo siguiente: Supongamos que es un MDI

Private Sub MDIForm_Load()
call cmdDeshabilitar_Click()
End Sub

Supongamos que es un Form comun y corriente
Private Sub Form_Load()
call cmdDeshabilitar_Click()
End Sub

esto va hacer que el boton cerrar [X] quede deshabilitado como un boton sin codigo, por mas que le das click, el boton no hace nada.
pero si quieres que el boton quede deshabilitado y desactivado (no clickeable) entonces debes poner el codigo de cmdDeshabilitar_Click() al cargar el form de esta manera:

Private Sub Form_Load()
'************* DESHABILITAR CERRAR ******************
Dim hMenu As Long
hMenu = GetSystemMenu(hWnd, 0)
Call ModifyMenu(hMenu, SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED, -10, "Close")
'**************************************************************
End Sub

Esta es la forma que uso en XP no lo he probado en otro windows (digo porque es usando api) espero te sirva
Salud!
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:Boton Cerrar

Publicado por Miguel Rondon (1 intervención) el 02/11/2016 19:07:56
Excelente Jorge me Funciono lo unico es que windows 8.1 no lo deshabilita pero si no lo deja cerrar por lo menos cumple lo que necesitaba, Muchas Gracias!!!!!
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
Imágen de perfil de A.H.H

RE:Boton Cerrar

Publicado por A.H.H (116 intervenciones) el 19/08/2010 20:49:38
Hola esto es otra forma Asun, en el evento query unload del form que quieres que no se cierre colocas el siguiente codigo:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Y por si acaso para probar el ejemplo pon este codigo en el evento form click para poder salir del form al darle un click en el centro del mismo.

Private Sub Form_Click()
Unload Me
End Sub

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Boton Cerrar

Publicado por Asun (43 intervenciones) el 20/08/2010 03:03:01
GRACIAS a todos de corazon.
Estoy desbordada con tanta ayuda.
Bueno... ya es que me parece un desprecio no intentar estas soluciones que me dais.

No se si me saldra algo porque ya digo que soy muy novata en esto...

... pero de nuevo GRACIAS amigos.

De todos los foros que conozco, este es sin duda el mas efectivo. Y eso es por culpa de ustedes.

Asun.
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:Boton Cerrar

Publicado por Asun (43 intervenciones) el 20/08/2010 22:44:33
Conseguido!!!
Con el codigo de H.H.H.....¡¡ CONSEGUIDO !!

GRACIAS a todos los de esta pregunta.

Asun.
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:Boton Cerrar

Publicado por yimmy (1 intervención) el 31/08/2016 14:30:58
Nesecito programar el botón salir para que cuando lo precione me aparezca si deseo salir si o no me ayudan
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