Consultor Eletrônico



Kbase P104458: How to create a dynamic browse, lock its first column, make that column updatable, and define an ent
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   26/12/2008
Status: Verified

GOAL:

How to create a dynamic browse?

GOAL:

How to lock the first column of a dynamic browser?

GOAL:

How to make a dynamic browse column updatable?

GOAL:

How to define an entry trigger for a dynamic browse column?

FACT(s) (Environment):

Windows
Progress 9.1x

FIX:

The following sample code demonstrates how to creates a dynamic browse, lock its first column, make that first column updatable, and define an entry trigger for it:

DEFINE VARIABLE My-Brow-Hndl AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE qry-Handle AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE bh AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE bho AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE bf AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE btnh AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE bc AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE ix AS INTEGER NO-UNDO.
DEFINE VARIABLE v-cnum AS INTEGER NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE myh AS HANDLE NO-UNDO.
/* screen definition */
FORM WITH FRAME X WIDTH 100 TITLE "BROWSE" 20 DOWN.
CREATE BUFFER bh FOR TABLE "customer".
CREATE QUERY qry-handle.
qry-handle:SET-BUFFERS(bh).
qry-handle:QUERY-PREPARE("for each customer").
qry-handle:QUERY-OPEN.
/* build the browse */
CREATE BROWSE My-Brow-Hndl
ASSIGN
X = 5
Y = 10
WIDTH = 80
DOWN = 10
QUERY = qry-handle
FRAME = FRAME x:handle
SENSITIVE = TRUE
READ-ONLY = FALSE
FONT = 2.
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.custnum").
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.name").
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.address").
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.address2").
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.City").
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.State").
my-brow-hndl:NUM-LOCKED-COLUMNS = 1.
REPEAT i = 1 TO my-brow-hndl:NUM-COLUMNS :
bc = my-brow-hndl:GET-BROWSE-COLUMN(i).
bc:COLUMN-READ-ONLY = FALSE.
bc:READ-ONLY = FALSE.
bc:COLUMN-FONT = 2.
END.
/* Define the 'ENTRY' event trigger */
DO ix = 1 TO my-brow-hndl:NUM-COLUMNS:
myh = my-brow-hndl:GET-BROWSE-COLUMN(ix).
IF myh:NAME = "custnum" THEN DO: /* Or name or address for whichever field we want */
ON 'entry':U OF myh
DO:
MESSAGE self:screen-value VIEW-AS ALERT-BOX.
END.
END.
END.
VIEW FRAME X.
WAIT-FOR CLOSE OF THIS-PROCEDURE.
DELETE WIDGET my-brow-hndl.
DELETE WIDGET qry-handle.
DELETE WIDGET myh.