| 
       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 | 
| 
       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. | 
 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.
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.
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.
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.
   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.
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.