Cómo desactivar las opciones del menú de la ventana principal de Access


Volver
'*********************************************************
' DeleteMainMenu
'
' Rutina que desactiva las opciones del menú de la ventana
' principal de Access, como el botón cerrar, minimizar,
' etc.
' ' Argumentos
' ItemMenu: Opcional. Una cualquiera de las constantes
' declaradas más abajo, y que comienzan con el prefijo
' "SC_". Si no se pasa ningún argumento, la rutina
' desactivará todas las opciones
'

Private Declare Function GetSystemMenu _ Lib "user32" _ (ByVal hWnd As Long, _ ByVal bRevert As Long) As Long Private Declare Function DrawMenuBar _ Lib "user32" _ (ByVal hWnd As Long) As Long Private Declare Function DeleteMenu _ Lib "user32" _ (ByVal hMenu As Long, _ ByVal nPosition As Long, _ ByVal wFlags As Long) As Long

Public Const MF_BYCOMMAND = &H0& Public Const MF_BYPOSITION = &H400& ' Constante para la opción Cerrar
Public Const SC_CLOSE = &HF060 ' Constante para la opción Maximizar
Public Const SC_MAXIMIZE = &HF030 ' Constante para la opción Minimizar
Public Const SC_MINIMIZE = &HF020 ' Constante para la opción Mover
Public Const SC_MOVE = &HF010 ' Constante para la opción Restaurar
Public Const SC_RESTORE = &HF120 ' Constante para la opción Tamaño
Public Const SC_SIZE = &HF000 Public Sub DeleteMainMenu(Optional ItemMenu) Dim hMenu As Long ' obtenemos el identificador del menú de la ' ventana principal de Access hMenu = GetSystemMenu(Access.hWndAccessApp, False) If hMenu Then ' si no se le pasan argumentos a esta rutina ' entonces desactivara todas las opciones del menú If IsMissing(ItemMenu) Then ' deshabilita la opción "Maximizar" Call DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND) ' deshabilita la opción "Minimizar" Call DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND) ' deshabilita la opción "Tamaño" Call DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND) ' deshabilita la opción "Mover" Call DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND) ' deshabilita la opción "Restaurar" Call DeleteMenu(hMenu, SC_RESTORE, MF_BYCOMMAND) ' deshabilita la opción "Cerrar" Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND) ' por último quitamos la barra separadora Call DeleteMenu(hMenu, 0, MF_BYPOSITION) Else ' deshabilita la opción indicada en ItemMenu Call DeleteMenu(hMenu, ItemMenu, MF_BYCOMMAND) End If ' Redibujamos botones y menú Call DrawMenuBar(Access.hWndAccessApp) End If End Sub '
' La siguiente rutina restaura el menú de la ventana
' principal de Access a su estado original '

Public Sub RestoreMainMenu() ' Habilita el menú a su estado original Call GetSystemMenu(Access.hWndAccessApp, True) Call DrawMenuBar(Access.hWndAccessApp) End Sub
'
' Si queremos desactivar del todo la opción "Cerrar" del
' programa, deberemos añadir en algún punto de nuestro
' código la siguiente instrucción, que deshabilitará la
' opción "Salir" del menú "Archivo"
'

CommandBars("Menu Bar"). _
Controls("Archivo"). _
Controls("Salir"). _
Enabled = False
'
' y eso es todo, amigos ;-)
'*********************************************************
Contactar Última actualización 4/10/2003     © Juan M. Afán deRibera