ACC: Cómo atenuar los elementos de menú (gris) con Access Basic

Seleccione idioma Seleccione idioma
Id. de artículo: 88940 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

Avanzado: Requiere codificación experto, interoperabilidad, conocimientos y multiusuario.

Access Basic carece de un comando que permite que no esté disponible (a dim o gris) un elemento de menú. También no hay propiedades de formulario que le permiten establecer esta característica de menú. Sin embargo, puede utilizar Windows funciones de la interfaz de programación de aplicaciones (API) para cambiar tales características de elemento de menú.

Nota: En Microsoft Access para Windows 95 versión 7.0, puede realizar esta tarea utilizando una macro o usando Visual Basic para aplicaciones. Para obtener más información sobre cómo crear un elemento de menú no está disponible, busque "SetMenuBar acción," y "Crear un menú personalizado comandos aparecen atenuadas o seleccionado" utilizando Microsoft Access para el índice de Ayuda de Windows 95.

Nota: Estas funciones de API sólo funcionará para menús personalizados creados con las macros. No funcionarán para menús de Microsoft Access predeterminado. Esta técnica también no funcionará para elementos de menú personalizado creados con la acción EjecutarElementoMenú. Por ejemplo, si agrega un comando al menú con la acción EjecutarElementoMenú y especificar los argumentos PrintPreview para la acción, Microsoft Access anula cualquier función de API que escribir para comprobar o dim este comando de menú.

Más información

La función API de Windows siguiente se utiliza para hacer que un elemento de menú aparezca atenuado:

    EnableMenuItem% (hMenu%, wIDEnableItem%, wEnable%)
				


Esta función se habilita o deshabilita un elemento de menú como sigue:

   hMenu%         Specifies the menu.

   wIDEnableItem% Specifies the menu item to be checked. The
                  wIDEnableItem% parameter can specify pop-up menu
                  items as well as menu items.

   wEnable%       Specifies the action to take. It can be a
                  combination of MF_DISABLED, MF_ENABLED, and
                  MF_GRAYED. These values can be combined by using
                  the bitwise OR operator.

   Return Value   The return value specifies the previous state of the
                  menu item. The return value is -1 if the menu item
                  does not exist.
				

Ejemplo

En el ejemplo siguiente se diseña un menú que hace un elemento de menú aparecerá atenuado:
  1. Cree la siguiente macro nueva y guarde la macro como manipulación de menú macro:
          Macro Name             Action        Function Name
          ----------------------------------------------------------
          GrayItem               RunCode       Gray_Menu_Item(0,0)
          UnGray                 RunCode       UnGray_Menu_Item(0,0)
    						
    Al determinar la posición de un comando de menú, barras separadoras se cuentan como comandos. Por ejemplo, para la posición de la importación comando del menú archivo en la ventana base de datos, utilice los argumentos de referencia 0 (para el menú Archivo) y 7 (para el comando Importar). Las posiciones de 3 y 6 corresponden a las barras de separador en el menú archivo.
  2. Cree la siguiente macro nueva y guarde la macro como menú de la demostración personalizado:
          Macro Name             Action        Function Name
          --------------------------------------------------
          Top Level Menu         AddMenu
    
          [Top Level Menu].AddMenu Action Arguments
          ------------------------------------------
          Menu Name          &Gray
          Menu Macro Name    Menu Manipulation Macro
    						
  3. Cree un nuevo formulario en blanco.
  4. Establezca la propiedad BarraDeMenús (MenuBar) a la macro de menú de la demostración de personalizado.

    Nota: En la versión 1.x de la propiedad MenuBar se denomina el OnMenu propiedad.
  5. Guarde el formulario como formulario de manipulación de menús.
  6. Cree un nuevo módulo, escriba el código siguiente y, a continuación, guarde el módulo como código de manipulación de menús.

    Nota: En el siguiente ejemplo de código, un subrayado (_) al final de una línea se utiliza como un carácter de continuación de línea. Quite el carácter de subrayado del final de la línea cuando escriba este código.

       '********************************************************************
       '            Declarations section of the module
       '********************************************************************
          Option Explicit
    
    
          Declare Function FindWindow% Lib "user" (ByVal lpClassName_
                              As Any, ByVal lpCaption As Any)
          Declare Function GetMenu% Lib "user" (ByVal hWnd%)
          Declare Function GetSubMenu% Lib "user" (ByVal hSubMenu%,_
                              ByVal nPos%)
          Declare Function EnableMenuItem% Lib "user" (ByVal hMenu%,_
                              ByVal wItem%, ByVal wEnable%)
          Declare Function IsZoomed% Lib "User" (ByVal hWnd%)
          Declare Sub DrawMenuBar Lib "User" (ByVal hWnd%)
    
          Const MF_BYPOSITION = &H400
          Const MF_GRAYED = &H1
          Const MF_UNGRAYED = &H0
    
          Const MyNull = 0&
          Const ClassName = "OMain"
    
          Dim ChWnd%       'handle to the Microsoft Access window.
          Dim hMenuTop%    'handle to the Microsoft Access menu.
          Dim hSubMenu%    'handle to the pop-up menu
          Dim ItemID%      'command ID associated with menu item.
          Dim ReturnVal%
    
          '===========================================================
          'This function initializes:
          '
          ' - The window handles associated with the Microsoft Access form.
          ' - The handle to the menu of the specified window.
          ' - The menu handle of the specified pop-up menu of the window menu.
          '
          'The variables here are global to the database.
          '===========================================================
          Sub Get_Menu_Handles (TopLevel%)
    
             ChWnd% = FindWindow(ClassName, MyNull)
             hMenuTop% = GetMenu(ChWnd%)
             hSubMenu% = GetSubMenu(hMenuTop%, TopLevel%)
    
             End Sub
    
          '===========================================================
          'This function dims a menu item. The text of a dimmed
          'menu item appears in light gray text on the menu,
          'but does not allow the user to select the item either by
          'mouse or keypad. The macro action associated with the
          'menu item does not execute when the user tries to select
          'the menu item.
          '===========================================================
          Function Gray_Menu_Item (TopLevel%, SubLevel%)
    
             'If the form is maximized, the system menu is added to the forms
             'menu bar, so increment the actual TopLevel%
             If (IsZoomed(Screen.ActiveForm.hWnd)) Then
                TopLevel% = TopLevel% + 1
             End If
    
             Call Get_Menu_Handles(TopLevel%)
             Gray_Menu_Item = EnableMenuItem(hSubMenu, SubLevel%,_
                                  MF_GRAYED Or MF_BYPOSITION)
    
             DrawMenuBar ChWnd%
          End Function
    
          '===========================================================
          'This function does not ungray a menu item that also enables
          'the menu item so the user can select the item and run the
          'macro associated with the menu.
          '===========================================================
          Function UnGray_Menu_Item% (TopLevel%, SubLevel%)
    
             'If the form is maximized, the system menu is added to the forms
             'menu bar, so increment the actual TopLevel%
             If (IsZoomed(Screen.ActiveForm.hWnd)) Then
                TopLevel% = TopLevel% + 1
             End If
    
             Call Get_Menu_Handles(TopLevel%)
             UnGray_Menu_Item = EnableMenuItem(hSubMenu, SubLevel%,_
                                    MF_UNGRAYED Or MF_BYPOSITION)
    
             DrawMenuBar ChWnd%
          End Function
    						
  7. Abra el formulario formulario de manipulación de menús en la vista formulario. Observe que el menú de Microsoft Access habitual desaparece y se reemplaza por el menú personalizado creado en los pasos anteriores.

    Hay dos opciones en el nuevo menú. Elija el comando GrayItem y el comando aparecerá atenuado. Elija el comando UnGray y el comando de menú GrayItem está disponible.

Propiedades

Id. de artículo: 88940 - Última revisión: jueves, 23 de enero de 2014 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowto kbprogramming KB88940 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): 88940

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