Deshabilitar Controles

21/11/2005 - 14:26 por Mauro | Informe spam
Deseo saber como hago para ocultar el control (Minizar, maximizar y cerrar)
de un formulario.

Agradezco de antemano la colaboración prestada.
 

Leer las respuestas

#1 Héctor Miguel
21/11/2005 - 23:23 | Informe spam
hola, Mauro !

... como hago para ocultar el control (Minizar, maximizar y cerrar) de un formulario.



-> si te refieres a formularios de VB [stand-alone], (por lo de los controles de minimizar etc.)...
supongo que 'simplemente' NO se los debes 'poner' :))

-> si te refieres a formularios de VBA [como para execl]... que NO tienen esas caracteristicas...
[aunque] hablando de 'prohibiciones/seguridad/... etc.' en una aplicacion tan... 'amigable' como es excel...
requiere determinar 'hasta que nivel' son las necesidades/pretenciones/nivel_usuarios... etc. :-(
-> ademas de la 'X'... otras opciones que tiene el usuario para 'salir/terminar/...' un codigo/form/... en ejecucion...
-> presionar la tecla {escape}... -> presionar las teclas {alt}+{F4}... -> combinar las teclas {ctrl}+{pausa}... etc.
-> 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.
=1) la mas sencilla es usar el evento '_queryclose' en el modulo del formulario [p.e.]
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
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) usando llamadas a algunas API's de windows [p.e.]
copia las siguientes lineas en el modulo de codigo ->del formulario<. ==Private Declare Function BuscarVentana _
Lib "User32" Alias "FindWindowA" ( _
ByVal Clase As String, ByVal Nombre As String) As Long
Private Declare Function ObtenerMenu _
Lib "User32" Alias "GetSystemMenu" ( _
ByVal Ventana As Long, ByVal Revertir As Long) As Long
Private Declare Function QuitarMenu _
Lib "User32" Alias "RemoveMenu" ( _
ByVal Menu As Long, ByVal Posicion As Long, ByVal Estado As Long) As Long
Private Sub UserForm_Initialize()
EsteFormulario = BuscarVentana(vbNullString, Me.Caption)
EsteMenu = ObtenerMenu(EsteFormulario, False)
QuitarMenu EsteMenu, 1, &H400& Or &H1000&
QuitarMenu EsteMenu, 2, &H400& Or &H1000&
QuitarMenu EsteMenu, 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'] :))
=> 'ventajas adicionales'... el usuario no podra 'mover/cambiar/...' la posicion del formulario ;)

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 ...

Preguntas similares