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:
- Create a new form called Pop-up Menu Form.
- 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.
- 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>
- Save the form and close it.
- 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&)
- 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
- Choose the form in which you want the pop-up menu to appear. Open the
form in Design view.
- 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.
|