ocultar titulo de un formulario y desactivar cierre

14/09/2006 - 21:39 por J.P. | Informe spam
Tengo un formulario y quisiera saber como puedo ocultarle la barra de
titulo y ademas desactivar el cierre del mismo a traves de la
convinación de teclas Alt+F4.
 

Leer las respuestas

#1 Héctor Miguel
15/09/2006 - 05:51 | Informe spam
hola, Jose !

Tengo un formulario y quisiera saber como puedo ocultarle la barra de titulo
y ademas desactivar el cierre del mismo a traves de la convinacion de teclas Alt+F4.



-> dependiendo de 'hasta donde' sea [realmente] necesario quitar/ocultar la barra de titulos...
algunas alternativas [que pudieran ser incluso 'combinables'] con sus pros y contras son las siguientes...

decide cual/es aplica/n de la mejor manera a tus intenciones y... si cualquier duda... comentas?
saludos,
hector.

todos los ejemplos 'van' en el modulo de codigo -> del formulario ==
1) si SOLO quieres 'evitar' que el usuario 'cierre/cancele' el formulario SIN tu 'permiso'...
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = vbFormControlMenu
End Sub
___
=> el usuario SOLO 'podra' salir/terminar/... el formulario a traves de la salida que TU le 'proveas' en el codigo ;)
o... [solamente] pulsando la combinacion {ctrl}+{pausa} =>interrupcion del codigo<= :-((

2) si SOLO quieres 'evitar' que el usuario ande 'paseando' el formulario por la pantalla...
Private Declare Function Formulario Lib "User32" Alias "FindWindowA" ( _
ByVal Clase As String, ByVal Nombre As String) As Long
Private Declare Function Menu Lib "User32" Alias "GetSystemMenu" ( _
ByVal Ventana As Long, ByVal Revertir As Long) As Long
Private Declare Function Quitar Lib "User32" Alias "RemoveMenu" ( _
ByVal Menu As Long, ByVal Posicion As Long, ByVal Estado As Long) As Long
Private Sub UserForm_Initialize()
Quitar Menu(Formulario(vbNullString, Me.Caption), 0), 1, &H400& Or &H1000&
Quitar Menu(Formulario(vbNullString, Me.Caption), 0), 2, &H400& Or &H1000&
Quitar Menu(Formulario(vbNullString, Me.Caption), 0), 4, &H400& Or &H1000&
End Sub
___
=> las 'posibilidades' de salir/terminar/... con el formulario son las mismas que con el 'truco' anterior...
MAS.. [agrega que]... puede tambien utilizar la combinacion {alt}+{F4} :-((
[a menos que decidas 'conservar' el truco del '_querycolse'] :))

3) si el usuario presiona {ctrl}+{pausa} o... {escape} estando una macro 'en ejecucion'...
se produce un error 18 en tiempo de ejecucion =>operacion cancelada por el usuario<y para que sea 'detectado' por esa propiedad, se debe incluir un 'manejo de errores' en el codigo
prueba con la propiedad EnableCancelKey [es del objeto Application]
=>revisa en la ayuda [vba] los comentarios acerca de 'cuidados especiales' en su uso<si [solamente] quieres 'desaparecer' el dialogo de la 'pregunta-confirmacion'... [p.e.]
' ... otras lineas de tu codigo ...
On Error GoTo Ver_Error
Application.EnableCancelKey = xlErrorHandler
' ... otras lineas de tu codigo ...
Ver_Error:
If Err <> 18 Then Resume ' si el usuario 'intento' detener el codigo... el codigo... NO 'le hace caso' :))
' ... otras lineas de tu codigo ...

4) si [efectivamente] 'necesitas' QUITAR la barra de titulos del formulario...
tendras que hacerle algunos arreglos a las dimensiones del formulario... [p.e.]
-> 'recortar la altura' del formulario [en tiempo de dise#o] +/- el alto de la barra de titulo
no importa si 'ves' que la parte inferior del formulario 'se come' algunos controles :-(
-> proveerle unos 'bordes personalizados' [efectos especiales]
-> y copia las las siguientes lineas [mismo modulo de codigo del formulario]...
Private Declare Function BuscarVentana _
Lib "User32" Alias "FindWindowA" ( _
ByVal Clase As String, ByVal Ventana As String) As Long
Private Declare Function ObtenerVentana _
Lib "User32" Alias "GetWindowLongA" ( _
ByVal Ventana As Long, ByVal Indice As Long) As Long
Private Declare Function EstablecerVentana _
Lib "User32" Alias "SetWindowLongA" ( _
ByVal Ventana As Long, ByVal Indice As Long, _
ByVal NuevoEstilo As Long) As Long
Private Declare Function MostrarVentana _
Lib "User32" Alias "ShowWindow" ( _
ByVal Ventana As Long, ByVal Comando As Long) As Long
Private Sub UserForm_Activate()
Dim miFormulario As Long, Estilo As Long
Me.SpecialEffect = fmSpecialEffectSunken
If Val(Application.Version) < 9 _
Then miFormulario = BuscarVentana("ThunderXFrame", Me.Caption) _
Else miFormulario = BuscarVentana("ThunderDFrame", Me.Caption)
Estilo = ObtenerVentana(miFormulario, (-16))
Estilo = Estilo And Not &HC00000
EstablecerVentana miFormulario, (-16), Estilo
MostrarVentana miFormulario, 5
End Sub

Preguntas similares