Inhabilitar cuadro de control botón cerrar Access

Cuando uno ya realizo el procedimiento de inhabilitar el Ribbon y la tecla Shift es posible inhabilitar el cuadro control de access que solo pueda salir de la aplicación por medio de los botones que uno programo.

2 respuestas

Respuesta
2

Basta con

¡Gracias! 

Estuve validando por todo lado y me encontré un procedimiento para Inhabilitar el botón cerrar de la parte superior de ACCESS con el fin de que solo se pueda salir por los botones que programamos de los formularios de ACCESS y pues pido disculpas si no encontré las palabras especificas para hacerme entender y solo deseo compartir algo que encontré.

1. debemos crear un modulo y copiamos el siguiente codigo

Function InitApplication()
Dim c As CloseCommand
Set c = New CloseCommand
'Disable Close menu.
c.Enabled = False
End Function

2. creamos un modulo de clase y copiamos el siguiente código.

Option Explicit

Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
ByVal bRevert As Long) As Long

Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

Private Declare Function GetMenuItemInfo Lib "user32" Alias _
"GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As _
Long, lpMenuItemInfo As MENUITEMINFO) As Long

Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Const MF_GRAYED = &H1&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060&

Public Property Get Enabled() As Boolean
Dim hWnd As Long
Dim hMenu As Long
Dim result As Long
Dim MI As MENUITEMINFO
MI.cbSize = Len(MI)
MI.dwTypeData = String(80, 0)
MI.cch = Len(MI.dwTypeData)
MI.fMask = MF_GRAYED
MI.wID = SC_CLOSE
hWnd = Application.hWndAccessApp
hMenu = GetSystemMenu(hWnd, 0)
result = GetMenuItemInfo(hMenu, MI.wID, 0, MI)
Enabled = (MI.fState And MF_GRAYED) = 0
End Property

Public Property Let Enabled(boolClose As Boolean)
Dim hWnd As Long
Dim wFlags As Long
Dim hMenu As Long
Dim result As Long
hWnd = Application.hWndAccessApp
hMenu = GetSystemMenu(hWnd, 0)
If Not boolClose Then
wFlags = MF_BYCOMMAND Or MF_GRAYED
Else
wFlags = MF_BYCOMMAND And Not MF_GRAYED
End If
result = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
End Property

 3. el ultimo paso es crear una macro que llame la siguiente función y le damos con el nombre
AutoExec con el fin de que se ejecute al iniciar la aplicación.

buscamos una macro que se llame Ejecutar código y llamamos la función InitApplication()


y cuando inicie el programa el botón cerrar principal de access queda anulado y solo se puede salir por los botones que programamos con nuestros formularios.

Respuesta
2

La respuesta que te da Icue es correcta si lo quieres hacer en un formulario, pero si como yo entiendo lo quieres hacer para la ventana de Access, no te sirve.

En el foro de MVP Access dan esta solución: http://www.mvp-access.com/foro/hilo-ocultar-botn-cerrar_topic81462.html

En la web del Búho tambien hay códigos que hacen lo que pides, aunque ya son algo antiguos y quizás no funcionen para las nuevas versiones: http://www.mvp-access.es/buho/ejemplos.asp?pag=3  (mira por ejemplo el 5º enlace [tópico 58]). Si usas el buscador en esta web con la palabra "cerrar", te aparecerán más soluciones.

Otro ejemplo sería éste de Juan M. Afan: http://www.mvp-access.es/juanmafan/api/desactivarmenu.htm 

Un saludo.


     bit.ly/ForoNkSv 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas