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

ID: Q95444


The information in this article applies to:


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 
Version           : 1.0 1.1 2.0
Platform          : WINDOWS 
Issue type        : kbhowto 

Last Reviewed: March 18, 1999