Inhabilitar botón para cerra formulario

Kemmotar
27 de Junio del 2004
Hola a todos,

Estoy haciendo un programa en Vb, y quiero inhabilitar los botones que salen en la parte de arriba del formulario de maximizar, minimizar y cerrar.

Los botones de maximizar y minimizar ya los he inhabilitado poniendolos a false, pero no se como hacer con el botón de cerrar (la x).

¿Alguien sabe cómo hacerlo?

Gracias, Kemmotar

Observador
27 de Junio del 2004
Si no quieres mostrar ningun boton del formulario, prueba a poner la propiedad ControlBox del Form a False y con eso quitas todos los botones... Minimmizar, Maximixar y Cerrar...

Hasta pronto...

Bartolom
27 de Junio del 2004
Se puede hacer como dice Observador, el problema es que el formulario te va a quedar sin la barra de título (no recomendable cuando es un formulario on top que necesites mover o arrastrar)
La forma de deshabilitar el botón es la siguiente:

Al principio del código del formulario donde quieras deshabilitar el botón, colocas lo siguiente:

Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_BYPOS = &H400&

Public Sub funQClose(ByVal prmhWnd As Long)
Dim varMenuTitulo As Long
varMenuTitulo = GetSystemMenu(prmhWnd, 0)
Call RemoveMenu(varMenuTitulo, 6, MF_BYPOS)
Call RemoveMenu(varMenuTitulo, 5, MF_BYPOS)
End Sub

Luego, en el evento Load del formulario, agregas la siguiente línea

funQClose nombredetuformulario.hWnd


La otra solución sería a través del evento QueryUnload de tu formulario (así deshabilitas la función del botón cerrar, pero el botón igual queda operativo a nivel de click, o sea, puedes clickearlo, pero el botón no hará absolutamente nada). Debes colocar esto en tu código:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then
Cancel = 1
End If
End Sub


Saludos!
Bartolom
Chile

Kemmotar
27 de Junio del 2004
Gracias a los 2 por contestar.

La 2ª forma es la que me interesa, ya que quiero que salga la barra de título.

Voy a probarlo. Saludos, Kemmotar