ACC: Cómo deshabilitar el botón Cerrar (x) en la ventana de aplicación de Access (95/97)

Seleccione idioma Seleccione idioma
Id. de artículo: 258049 - Ver los productos a los que se aplica este artículo
Avanzado: Requiere codificación experto, interoperabilidad, conocimientos y multiusuario.

Este artículo se aplica únicamente a las bases de datos de Microsoft Access (.mdb).

Expandir todo | Contraer todo

En esta página

Resumen

Microsoft Access no tiene ningún método integrado para deshabilitar el botón Cerrar (x) en la ventana de aplicación o el comando Cerrar del menú de sistema de la ventana de la aplicación. En este artículo se describe cómo deshabilitar ambos de estos elementos mediante programación.

Más información

Para deshabilitar el botón Cerrar aplicación y el comando Cerrar del menú sistema , debe llamar a las funciones GetSystemMenu y ModifyMenu de la API Win32.

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos.

Ejemplo paso a paso


  1. Inicie Microsoft Access.
  2. Abra la base de datos de ejemplo Neptuno.mdb.
  3. En el menú Insertar , haga clic en Módulo de clase .
  4. Escriba o pegue el código siguiente en la sección Declaraciones:
    Option Compare Database
    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&
    					
  5. Agregue los siguientes procedimientos en el módulo de clase:
    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
    					
  6. En el menú archivo , haga clic en Guardar Neptuno (para guardar el proyecto) y, cuando se le pida el nombre del módulo de clase, guárdelo como CloseCommand.
  7. En el menú Insertar , haga clic en un módulo para crear un nuevo módulo estándar.
  8. Agregue el procedimiento siguiente al módulo:
    Function InitApplication()
       Dim c As CloseCommand
       Set c = New CloseCommand
       
       'Disable Close menu.
       c.Enabled = False
    End Function
    					
  9. En el menú Depurar , haga clic en Compilar Neptuno . Si el proyecto no se compila correctamente, corregir los errores de compilación y, a continuación, vuelva a compilar el proyecto.
  10. En el menú archivo , haga clic en Guardar Neptuno y utilice el nombre predeterminado que aparece en el cuadro Nombre haciendo clic en Aceptar .
  11. Cree una nueva macro con las siguientes acciones y argumentos de acción:
       Action
       -------
       RunCode
    
       Action Arguments
       -------------------------------
       Function Name: InitApplication()
    					
  12. Guardar la macro y asígnele el nombre Autoexec.
  13. Cierre la base de datos.
  14. Vuelva a abrir la base de datos.
Observe que el botón Cerrar y el comando Cerrar del menú de sistema de la ventana de la aplicación están deshabilitadas.

Uso

El módulo de clase CloseCommand descrita en este artículo le permite fácilmente habilitar o deshabilitar el botón Cerrar y el comando Cerrar de la ventana de la aplicación. El módulo de clase también permite comprobar el estado de estos comandos para determinar si actualmente están habilitados o deshabilitados. Antes de realizar cualquiera de ellas, el código debe crear una instancia de la clase CloseCommand, como se muestra en la función InitApplication anteriormente en este artículo.

Para comprobar el estado del botón Cerrar , consulte la propiedad Enabled de la instancia de CloseCommand creada por el código. Igualmente, para establecer el estado del botón Cerrar , asigne true o false a la propiedad Enabled de la instancia CloseCommand creada por el código.

Tenga en cuenta que esta técnica afecta el botón Cerrar en la ventana de aplicación de Microsoft Access, no en el botón Cerrar la ventana base de datos . Después de deshabilitar el botón Cerrar , el botón no se vuelva a automáticamente habilitar cuando se cierra la base de datos. Si el usuario cierra la base de datos y deja abierto Microsoft Access, el usuario no podrá salir de Microsoft Access mediante el botón Cerrar . En este caso, la aplicación debe volver a habilitar el botón Cerrar antes de finalice. En caso contrario, el usuario tendrá que salir y reiniciar Microsoft Access para que el botón Cerrar para habilitarse.

Esta técnica no deshabilita el comando Salir del menú archivo . Si la aplicación necesita deshabilitar este comando, debe personalizar el menú archivo para quitar el comando Salir .

Propiedades

Id. de artículo: 258049 - Última revisión: sábado, 27 de enero de 2007 - Versión: 4.1
La información de este artículo se refiere a:
  • Microsoft Access 97 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 95 Standard Edition
Palabras clave: 
kbmt kbhowto KB258049 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 258049
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com