skip to main content
OpenEdge Development: ADM and SmartObjects
SmartObjects : SmartObject summary
 
SmartObject summary
All SmartObjects have a set of common capabilities that allows them to participate smoothly in an application. They can:
*Initialize and destroy themselves.
*Get and set properties.
*Add and remove SmartLinks.
*Communicate using the ADM’s standard communication interface.
These capabilities provide a standard interface for creating and destroying SmartObject instances and for making SmartObjects interact. A procedure object that does not have these capabilities is not a SmartObject.
Note: When the AppBuilder reads procedure files, it looks for specific information to determine whether a procedure is a SmartObject. For details, see Chapter 6, “Advanced ADM Topics.”
The ADM provides the SmartObjects described in Table 2–1. Much of this information appears in Table 1–3 but it is repeated in this chapter for reference.
 
Table 2–1: SmartObject types
SmartObject type
Description
SmartContainer:
   SmartWindow,
   SmartFrame,
   SmartDialog
Holds instances of other SmartObjects, including other SmartContainers. The SmartContainer types are:
*SmartWindow — Provides a frame and a window for grouping widgets or SmartObjects
*SmartFrame — Provides a frame but not a window for grouping widgets or SmartObjects
*SmartDialog — Displays a dialog box and three default buttons (OK, Cancel, Help); also used for grouping widgets or SmartObjects
SmartDataObject
Defines a set of records to fetch from a database and the update logic for those records.
SmartDataBrowser
Browses records and allows updates to records in a browse widget; includes dynamic and static versions.
SmartDataViewer
Displays data fields in a frame and coordinates their display with other SmartObjects. Although a SmartDataViewer can be a type of SmartContainer, it is a highly specialized type and so is discussed separately.
SmartDataField
Displays a single data field in a SmartDataViewer.
SmartPanel
Groups functionally related buttons (for example, navigation or update buttons) on a frame.
SmartFolder
Provides an interface (tab folder and paging mechanism) for selecting pages in a SmartContainer.
SmartFilter
Displays data fields in a frame, to allow filtering of a data set by user‑specified selection criteria.
SmartToolbar
Provides a toolbar and/or menu interface to application commands.
SmartSelect
A SmartDataField that performs a lookup on a single data field.
Simple SmartObject
Provides a template for creating new visual SmartObjects.
Accessing SmartObjects
SmartObjects are available either as an icon on the AppBuilder palette or from the selection list in the FileNew dialog box. For detailed instructions on using the AppBuilder to incorporate SmartObjects into Progress applications and modify them at design time, see OpenEdge® Development: AppBuilder.
SmartObject instance properties
Because SmartObjects are procedure instances, they have different properties than basic objects (widgets). The instance properties for each SmartObject type are accessible in its Properties dialog box in the AppBuilder. This manual describes the instance properties available from the instance properties dialog box for a given SmartObject type. Note that descriptions of the instance properties also are available in the online help.
This manual does not describe the mechanics of using instance properties dialog boxes. For instructions, see OpenEdge® Development: AppBuilder. It does, however, describe how to modify existing SmartObject instance properties dialog boxes and write your own instance dialog boxes. For details, see Chapter 6, “Advanced ADM Topics.”
AppBuilder-maintained procedures
The ADM provides several procedures that are generated by the AppBuilder at design time for use by SmartObjects. These procedures are as follows:
*adm-create-objects — Used by SmartContainers to start instances of contained objects.
*disable_UIDeletes the SmartObject procedure handle (run from destroyObject).
*enable_UI — Enables basic objects in a SmartContainer being built; that is, makes them sensitive to user input (run from enableObject).
The AppBuilder handles these procedures specially, generating the appropriate code for them as it is needed. You can view these procedures in the AppBuilder’s Section Editor but they are marked Read Only. For information on using the Section Editor, see OpenEdge® Development: AppBuilder.