Try OpenEdge Now
skip to main content
ABL Reference
ABL Syntax Reference : CREATE widget statement
 

CREATE widget statement

Creates a dynamic object, such as a widget object.
Note: Does not apply to SpeedScript programming.

Syntax

CREATE { BUTTON | COMBO-BOX
| CONTROL-FRAME | DIALOG-BOX
| EDITOR | FILL-IN
| FRAME | IMAGE
| MENU | MENU-ITEM
| RADIO-SET | RECTANGLE
| SELECTION-LIST | SLIDER
| SUB-MENU | TEXT
| TOGGLE-BOX | WINDOW
| VALUE ( string-expression )
} handle [ IN WIDGET-POOL pool-name ]
[ ASSIGN { attribute = expression } ... ]
[ trigger-phrase ]
VALUE ( string-expression )
An expression of type CHARACTER that evaluates to the type of object you want to create (for example, BUTTON) with any combination of uppercase and lowercase characters.
handle
A variable of type HANDLE that the AVM sets for the new widget.
IN WIDGET-POOL pool-name
Specifies the widget pool in which the object is created. If you do not specify a widget pool, the object is created in the current default widget pool.
ASSIGN {attribute = expression}...
Assigns specified values to attributes of the object. The attribute parameter must be the name of a valid attribute for the object and expression must evaluate to a valid value for that attribute.
trigger-phrase
A trigger phrase associated with the object. For more information, see the Trigger phrase reference entry.

Example

This procedure creates a dynamic button that displays a list of customer names:
r-dynbut.p
DEFINE VARIABLE but1 AS HANDLE NO-UNDO.

DISPLAY "Dynamic Button Example" SKIP(3) WITH FRAME x SIDE-LABELS.

OPEN QUERY all-custs FOR EACH Customer.
GET FIRST all-custs.
DISPLAY Customer.Name WITH FRAME x.

CREATE BUTTON but1 ASSIGN
  ROW       = 3
  COLUMN    = 5
  LABEL     = "Next Customer"
  FRAME     = FRAME x:HANDLE
  SENSITIVE = TRUE
  VISIBLE   = TRUE
  TRIGGERS:
    ON CHOOSE DO:
      GET NEXT all-custs.
      DISPLAY Customer.Name WITH FRAME x.
    END.
  END TRIGGERS.

WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW.

Notes

*Attribute assignments you specify in the CREATE widget statement are processed in the order they appear. In some cases you must supply the attributes in proper order. For example, you cannot set the SENSITIVE or VISIBLE attributes for a field-level widget until you have set its FRAME attribute.
*If you are setting the FORMAT attribute and specifying an initial SCREEN-VALUE for the widget, assign the FORMAT before the SCREEN-VALUE. Otherwise, the default format is applied to the SCREEN-VALUE which might cause truncation or other formatting errors.
*You can use the ASSIGN option to assign a widget ID value to the WIDGET-ID attribute for this object. If you have enabled application-defined widget IDs in your ABL GUI application, by specifying the Use Widget ID (-usewidgetid) startup parameter, then the AVM uses this widget ID when it creates the widget at run time, instead of using the widget ID it normally generates by default. If you have not enabled application-defined widget IDs, then the AVM ignores this option setting at run time.
For more information about the WIDGET-ID attribute, see its reference entry in the Handle Attributes and Methods Reference. For more information about the Use Widget ID (-usewidgetid) startup parameter, see OpenEdge Deployment: Startup Command and Parameter Reference.
*If you create a frame to use as a DDE frame, you must realize the frame (set its VISIBLE attribute to TRUE) before using it as a conversation end-point. If you want the DDE frame to remain invisible during its use in a DDE conversation, set its HIDDEN attribute to TRUE after realizing the frame. For information on DDE frames, see OpenEdge Development: Programming Interfaces.

See also

CREATE QUERY statement, CREATE WIDGET-POOL statement, DEFINE FRAME statement, DELETE WIDGET statement, DELETE WIDGET-POOL statement, Trigger phrase