PreviousNextIndex

CREATE BROWSE statement


(Windows only; Graphical interfaces only)

Creates a dynamic read-only browse widget or a dynamic updateable browse widget. Add browse columns to the widget with the ADD-LIKE-COLUMN, ADD-COLUMNS-FROM, and ADD-CALC-COLUMN methods. Specify the query for the widget with the QUERY attribute.

The dynamic updateable browse can only be a NO-ASSIGN browse—you must make all data assignments to the database.

Note: Does not apply to SpeedScript programming.
Syntax

CREATE BROWSE handle 
  [ IN WIDGET-POOL widget-pool-name ] 
  [ ASSIGN { attribute=expression } ... ] 
  [ trigger-phrase ] 

handle
IN WIDGET-POOL widget-pool-name
ASSIGN { attribute = expression } ...
trigger-phrase
Example

The following example creates a dynamic browse and adds columns to it:

r-dynbrws.p
/* r-dynbrws */ 
DEFINE VARIABLE name-hdl       AS HANDLE  NO-UNDO. 
DEFINE VARIABLE num-hdl        AS HANDLE  NO-UNDO. 
DEFINE VARIABLE address-hdl    AS HANDLE  NO-UNDO. 
DEFINE VARIABLE calc-col-hdl   AS HANDLE  NO-UNDO. 
DEFINE VARIABLE browse-hdl     AS HANDLE  NO-UNDO. 
DEFINE VARIABLE buff-field-hdl AS HANDLE  NO-UNDO. 
DEFINE VARIABLE brws-col-hdl   AS HANDLE  NO-UNDO. 
DEFINE VARIABLE jx             AS INTEGER NO-UNDO. 
DEFINE BUTTON btn-delete LABEL "Delete". 
DEFINE BUTTON btn-quit   LABEL "&Quit"  AUTO-ENDKEY. 
DEFINE FRAME MyFrame SKIP(10) 
  btn-delete btn-quit 
  WITH SIZE 80 BY 22. 
DEFINE QUERY q1 FOR Customer SCROLLING.  
OPEN QUERY q1 FOR EACH Customer NO-LOCK. 
CREATE BROWSE browse-hdl 
  ASSIGN  
    TITLE     = "Dynamic Browse" 
    FRAME     = FRAME MyFrame:HANDLE 
    QUERY     = QUERY q1:HANDLE 
    X         = 2 
    Y         = 2 
    WIDTH     = 74 
    DOWN      = 10 
    VISIBLE   = YES 
    SENSITIVE = TRUE 
    READ-ONLY = NO. 
ON ROW-DISPLAY OF browse-hdl DO: 
  IF VALID-HANDLE(calc-col-hdl) THEN 
    calc-col-hdl:SCREEN-VALUE =  
      STRING(Customer.CreditLimit - Customer.Balance). 
END. 
ASSIGN 
  num-hdl      = browse-hdl:ADD-LIKE-COLUMN("Customer.CustNum"). 
  name-hdl     = browse-hdl:ADD-LIKE-COLUMN("Customer.Name"). 
  address-hdl  = browse-hdl:ADD-LIKE-COLUMN("Customer.Address"). 
  calc-col-hdl = browse-hdl:ADD-CALC-COLUMN("INT","->,>>>,>>9.99","", 
    "Credit Left"). 
/* Refresh needs to be done if ADD-CALC-COLUMN is done after the browse is 
   displayed. In ROW-DISPLAY trigger, we can only set the calc field’s 
   screen-value if the handle is set. And the handle is set after the  
   ADD-CALC-COLUMN method is done. */ 
browse-hdl:refresh(). 
browse-hdl:EXPANDABLE = YES. 
ON ROW-LEAVE OF browse-hdl DO: 
  IF browse-hdl:CURRENT-ROW-MODIFIED THEN DO: 
    REPEAT jx = 1 TO browse-hdl:NUM-COLUMNS: 
      brws-col-hdl = browse-hdl:GET-BROWSE-COLUMN(jx). 
      IF brws-col-hdl:MODIFIED THEN DO: 
        buff-field-hdl = brws-col-hdl:BUFFER-FIELD. 
        /* If buff-field-hdl is unknown, this is a calculated field and cannot 
           be updated */ 
        IF buff-field-hdl NE ? THEN 
          buff-field-hdl:BUFFER-VALUE = brws-col-hdl:SCREEN-VALUE. 
      END. 
    END. 
  END. 
END. 
ON CHOOSE OF btn-delete DO:   /*  LABEL "DeleteDynBrowse". */ 
  DELETE WIDGET browse-hdl. 
END. 
ON CHOOSE OF btn-quit DO: 
  QUIT. 
END. 
ENABLE ALL WITH FRAME MyFrame. 
WAIT-FOR CLOSE OF CURRENT-WINDOW. 

Notes
See also

ADD-CALC-COLUMN( ) method, ADD-COLUMNS-FROM( ) method, ADD-LIKE-COLUMN( ) method, CREATE QUERY statement, CREATE widget statement, DEFINE BROWSE statement, DEFINE QUERY statement, GET-BROWSE-COLUMN( ) method, QUERY attribute


OpenEdge Release 10.2B
Copyright © 2009 Progress Software Corporation
PreviousNextIndex