Consultor Eletrônico



Kbase P149683: 4GL/ABL: How to create a popup menu for dynamic browse?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/07/2009
Status: Unverified

GOAL:

4GL/ABL: How to create a popup menu for dynamic browse?

GOAL:

Where can I find sample code for creating a popup menu for dynamic browse?

FACT(s) (Environment):

Windows
Progress 9.x
OpenEdge 10.x

FIX:

To create a popup menu for dynamic browse, create an internal procedure that creates the menu and associate its handle with the browse widget handle using syntax similar to the following:
hBrowse:POPUP-MENU = hPopupMenu.
The internal procedure that creates the menu has code along the following lines:
IF VALID-HANDLE(hBrowse:POPUP-MENU) THEN
DO:
hPopupMenu = hBrowse:POPUP-MENU.
CREATE MENU-ITEM hRuleItem
ASSIGN
SUBTYPE = 'RULE':U
PARENT = hPopupMenu.
END.
ELSE
CREATE MENU hPopupMenu
ASSIGN
POPUP-ONLY = TRUE
TITLE = 'Browser Menu'.
RUN createPopupItem IN TARGET-PROCEDURE
(INPUT hPopupMenu,
INPUT FALSE,
INPUT '&Move Columns',
INPUT 'miColsMovable':U,
INPUT lMovable,
INPUT TRUE,
OUTPUT hColsMovable).
/* Repeat the above RUN createPopupItem statement for each menu item to be created */
Where createPopupItem is another internal procedure which has code along the following lines:
DEFINE INPUT PARAMETER phPopupMenu AS HANDLE NO-UNDO.
DEFINE INPUT PARAMETER lSubMenu AS LOGICAL NO-UNDO.
DEFINE INPUT PARAMETER pcLabel AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER pcName AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER plChecked AS LOGICAL NO-UNDO.
DEFINE INPUT PARAMETER plToggle AS LOGICAL NO-UNDO.
DEFINE OUTPUT PARAMETER phMenuItem AS HANDLE NO-UNDO.
IF lSubMenu THEN
CREATE SUB-MENU phMenuItem
ASSIGN
LABEL = pcLabel
NAME = pcName
PARENT = phPopupMenu.
ELSE DO:
IF plToggle THEN
CREATE MENU-ITEM phMenuItem
ASSIGN
LABEL = pcLabel
NAME = pcName
TOGGLE-BOX = plToggle
CHECKED = plChecked
PARENT = phPopupMenu.
ELSE
CREATE MENU-ITEM phMenuItem
ASSIGN
LABEL = pcLabel
NAME = pcName
PARENT = phPopupMenu.
END. /* else not submenu */
END PROCEDURE.
Complete sample source code of the createPopupMenu internal procedure, which creates the popup menu, an.d the createPopupItem internal procedure, which creates the menu items is included the DLC\src\adm2\Browse.p procedure..