ACC: How to Create Floating Pop-Up Menus (1.x/2.0)

Last reviewed: June 8, 1997
Article ID: Q95444
The information in this article applies to:
  • Microsoft Access versions 1.0, 1.1, 2.0

SUMMARY

Advanced: Requires expert coding, interoperability, and multiuser skills.

This article describes how to create "floating" pop-up menus using a combination of Microsoft Windows application programming interface (API) calls and Access Basic code.

MORE INFORMATION

To create a floating pop-up menu, follow these steps:

  1. Create a new form called Pop-up Menu Form.

  2. Add a list box control called Menu to the form. Make the control large enough to display each of the strings it contains without displaying a scroll bar. Set the control's properties as follows:

          List Box Properties
          ----------------------------------------------
    
          ControlName:   Menu
          RowSourceType: Value List
          RowSource:     String1;String2;String3;String4
          AfterUpdate:   =ItemSelected([Menu])
          Left:          0 in
          Top:           0 in
          FontName:      System
          FontSize:      8
          FontWeight:    Bold
    
       NOTE: Specify the menu strings in the RowSource property. Separate
       succeeding string values with a semicolon (;) character.
    
    

  3. Change the properties of the Pop-up Menu Form as follows:

          Form Properties
          ------------------------------------------------
    
          ScrollBars:      Neither
          Popup:           Yes
          RecordSelectors: No
          Width:           <Width of the list box control>
    
          Section Properties
          -------------------------------------------------
          Height:          <Height of the list box control>
    
    

  4. Save the form and close it.

  5. Create a new module and type the following code into the Declarations section for the module.

          'NOTE: Some of the following Windows API functions may be
          'defined in an existing Microsoft Access library. If so, the new
          'declarations would cause a duplication procedure name error. If
          'this error occurs, remove the offending declare statement from
          'your code or convert the declaration to a comment.
    

          'NOTE: In the following sample code, an underscore (_) is used
          'as a line continuation character. Remove the underscore when
          're-creating this code in Access Basic.
    

          Option Explicit
          Type POINTAPI
    
             x As Integer
             y As Integer
          End Type
    
          Global Const GWL_STYLE = (-16)
          Global Const WS_DLGFRAME = &H400000
    
          Declare Sub GetCursorPos Lib "User" (lpPoint As POINTAPI)
          Declare Function GetWindowLong& Lib "User" (ByVal hWnd%, _
                              ByVal nIndex%)
          Declare Function SetWindowLong& Lib "User" (ByVal hWnd%, _
                              ByVal nIndex%, ByVal dwNewLong&)
    
    

  6. Type the following functions:

          Function ShowPopup ()
    
             Dim coord As POINTAPI
             Dim attr&
    
             GetCursorPos coord
             DoCmd OpenForm "Pop-up Menu Form"
    
             attr& = GetWindowLong(Forms![Pop-up Menu Form].hWnd, GWL_STYLE)
             attr& = SetWindowLong(Forms![Pop-up Menu Form].hWnd, GWL_STYLE, _
                        attr& And Not WS_DLGFRAME)
    
             DoCmd MoveSize (coord.x * 14), (coord.y * 14), , 1100
          End Function
    
          Function ItemSelected (WhichItem As String)
             DoCmd Close
             MsgBox "The selected item was " & Trim(WhichItem)
          End Function
    
    

  7. Choose the form in which you want the pop-up menu to appear. Open the form in Design view.

  8. Select the event property that you want to use to activate the pop-up menu and specify the following function call:

          =ShowPopup()
    

When you open your form and cause the event assigned in Step 8 above, the pop-up menu appears at the current mouse position. The menu remains on the screen until you select an item from the pop-up menu.


Additional query words: shortcut adt
Keywords : kbprg PgmApi
Version : 1.0 1.1 2.0
Platform : WINDOWS
Hardware : X86
Issue type : kbhowto


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: June 8, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.