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.