Consultor Eletrônico



Kbase P117937: How to create a dynamic COMBO-BOX widget?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   4/10/2010
Status: Verified

GOAL:

How to create a dynamic COMBO-BOX widget?

GOAL:

How to populate a dynamic COMBO-BOX widget?

GOAL:

How to set the default initial SCREEN-VALUE of a dynamic COMBO-BOX widget?

FACT(s) (Environment):

Windows
Progress 9.x
OpenEdge 10.x

FIX:

The following 4GL procedure demonstrates how to create, populate and set the initial default screen-value of a dynamic COMBO-BOX widget:
DEFINE VARIABLE hDynCombo AS HANDLE NO-UNDO.
DEFINE VARIABLE btnDisplay AS HANDLE NO-UNDO.
DEFINE VARIABLE btnBuild AS HANDLE NO-UNDO.
DISPLAY "Dynamic COMBO-BOX Example" WITH FRAME FrameName WITH WIDTH 80 DOWN.
/* Create the dynamic COMBO-BOX widget */
CREATE COMBO-BOX hDynCombo
ASSIGN
ROW = 3
COLUMN = 5
INNER-LINES = 5
FRAME = FRAME FrameName:HANDLE
SORT = TRUE
SENSITIVE = TRUE
VISIBLE = TRUE.
/* Define the combo-box to have LIST-ITEM-PAIRS */
ASSIGN hDynCombo:LIST-ITEM-PAIRS = "" NO-ERROR.
/* Populate the dynamic COMBO-BOX widget */
CREATE BUTTON btnBuild
ASSIGN
ROW = 3
COLUMN = 20
LABEL = "Build List"
FRAME = FRAME FrameName:HANDLE
SENSITIVE = TRUE
VISIBLE = TRUE
TRIGGERS:
ON CHOOSE DO:
hDynCombo:ADD-LAST("BBBBB", "FIRST").
hDynCombo:ADD-LAST("AAAAA", "SECOND").
hDynCombo:ADD-LAST("CCCCC", "THIRD").
/* Set the default initial SCREEN-VALUE of the dynamic COMBO-BOX widget */
hDynCombo:screen-value = hDynCombo:ENTRY(1).
END.
END TRIGGERS.
/* Display the COMBO-BOX on CHOOSE of a dynamic BUTTON widget */
CREATE BUTTON btnDisplay
ASSIGN
ROW = 7
COLUMN = 10
LABEL = "Display Value"
FRAME = FRAME FrameName:HANDLE
SENSITIVE = TRUE
VISIBLE = TRUE
TRIGGERS:
ON CHOOSE DO:
MESSAGE hDynCombo:SCREEN-VALUE VIEW-AS ALERT-BOX.
END.
END TRIGGERS.
/* Main Block */
MAIN-BLOCK:
DO ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK
ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK:
VIEW FRAME FrameName IN WINDOW DEFAULT-WINDOW.
VIEW DEFAULT-WINDOW.
IF NOT THIS-PROCEDURE:PERSISTENT THEN
&nbsp.; WAIT-FOR CLOSE OF THIS-PROCEDURE.
END..