Consultor Eletrônico



Kbase P13875: How to code triggers for leave of cell in a dynamic browser
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/10/2008
Status: Verified

GOAL:

How to code triggers for leave of cell in a dynamic browser

FIX:

To get the trigger to fire we need to loop through the browser column's and define the trigger at this point.
Example code:

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.
DEF VAR ix AS INT.
DEFINE VARIABLE v-cnum AS INTEGER NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEF VAR myh AS HANDLE.

/* 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.cust-num").
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.name").
My-Brow-Hndl:ADD-LIKE-COLUMN("customer.address").

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.

/* set up the trigger */
DO ix = 1 TO my-brow-hndl:NUM-COLUMNS:
myh = my-brow-hndl:GET-BROWSE-COLUMN(ix).
IF myh:NAME = "Cust-num" THEN DO: /* Or name or address for whichever field we want */
ON 'leave':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.