Release 10.1A: OpenEdge Development:
AppBuilder

> ## AppBuilder objects

> AppBuilder provides for your use a full array of basic 4GL objects, several powerful ADM SmartObjects, and even three ActiveX (OCX) objects.

> Basic objects are objects that are available directly as part of the Progress 4GL, for example in a `VIEW-AS` clause. Some are very basic indeed—static rectangles, for example—while others, such as Editors, can be quite complex underneath.

> Table 1–1 lists the basic Progress 4GL objects available in AppBuilder. The descriptions represent how the objects appear under MS-Windows.

> Table 1–1: Basic 4GL object types
> Role | Object | Description
> --- | --- | ---
> Organizer | Window | The outermost organizer object. It is not modal, can have a menu bar and pulldowns, and can parent all other objects.
> Dialog box | Technically a type of frame with its own dedicated window. Dialog boxes are modal, cannot have a menu bar, cannot be resized, and must be parented by a window. You typically use them for capturing user input on a specific issue.
> Frame | An object that delimits a rectangular area and defines a TAB-traversal group. Frames can have their own border and title bar. You can use frames to organize and display other objects.
> Rectangle | A static object that visually delimits a rectangular area. You can use a rectangle to group other objects for emphasis. A rectangle does not define a traversal group or have any active characteristics; it is purely a visual object.
> Data access | Query | A group of related instructions that tell OpenEdge to find a subset of records from one or more database tables. This is a standalone object, but several objects have a query function embedded in them.
> Data display and capture | Data browser | An object that displays the results of a database query in row/column tabular format. Each row represents a record, and each column a field. Usually called a browse widget.
> (Data display and capture) | Combo box | An object that combines a fill-in with a selection list. The fill-in shows the current value. The user can set the value by typing into the fill-in, or by picking an item from those in the list.
> Data viewer | An object that displays the results of a database query one record at a time, using one fill-in per field. Also called a `DB-Fields` widget
> Editor | A field-level object that allows editing of large (typically multi-line) character fields. By default, editors support features such as cut, copy, paste, and word-wrap.
> Fill-in (Edit box) | A field-level object that accepts user input, typically a single line of text. The system evaluates that text, possibly performing additional processing such as type conversion and validation, and assigns the result to a database field or a variable.
> Radio-button set | A group of buttons representing a set of values for a variable, only one of which can be valid at a given time. Selecting a button automatically deselects the previous choice.
> Selection list (pick list) | A scrollable list of character strings. The strings are the possible values for an underlying field or variable. You can use a selection list to allow an end user to select one or several items from a predetermined list of character values.
> (Data display and capture) | Slider control | A virtual knob that the user moves along a track. The track represents some subrange of `INTEGER`; a built-in readout displays the current value. The limiting values are `-32,768` and `32,767`. Only a value of type `INTEGER`, without extent, can be displayed by a Slider.
> Toggle box (check box) | A small, square box that represents a logical value. You can use groups of check boxes to represent sets of properties.
> Action control | Button (pushbutton) | A field-level object that a user typically selects to invoke some action. AppBuilder offers one generic pushbutton plus others predefined for special purposes.
> Other | Text object (static text) | Standalone text that is not bound to any other object, though it might appear to be.
> Image object (static image) | A static field-level object used to display a bitmap from a graphics file. The Progress 4GL supports many different graphic formats under MS-Windows.

> SmartObjects are much more complex than the objects listed in Table 1–1. True subprogram modules, SmartObjects are external procedures that may contain hundreds of lines of 4GL code in themselves and their superprocedures. All SmartObjects are implemented as external procedures, but only those external procedures based on the file `smart.i` qualify as SmartObjects.

> Table 1–2 lists the SmartObjects available in the current release, and the abbreviations used elsewhere in this document.

> Table 1–2: SmartObject types
> Role | SmartObject | Description
> --- | --- | ---
> Organizer | SmartWindow (SWin) | Outermost Smart organizer object. Acts as a container and integrator for other objects, including other SmartContainers such as SmartFrames, etc.
> SmartDialog (SDialog) | A Smart, special-purpose frame object supported by a dedicated window.
> SmartFrame (SFrame) | Allows you to create reusable Smart layouts not suited to implementation as SmartDialogs.
> SmartFolder (SFolder) | Implements the tabbed-file-folder metaphor for managing paged interface displays.
> Simple SmartContainer (SSC) | Provides all functionality from the `SmartContainer` class without the overhead of a visible window. Useful for modules that can operate unattended in the background.
> Data access | SmartDataObject (SDO) | A query interface to a database. This object, available in both static and dynamic forms, supplies the data stream used by other objects such as the SmartDataViewer or the SmartDataBrowser. An SDO has no visible representation at run time.
> SmartBusinessObject (SBO) | A dedicated organizer object that integrates up to 20 SDOs, providing a single point of contact for other objects. In addition, the SBO allows you to update from multiple SDOs in a single server-side transaction.
> SmartFilter (SFilter) | A dynamic record-filtering object, visible at run time. Offers the user the ability to focus the associated SmartDataObject’s query as tightly as desired.
> Data display and capture | SmartDataBrowser (SDB) | Encapsulates a browse widget to view and possibly update data. Displays in a row/column format, and can present the fields for multiple records simultaneously.
> SmartDataViewer (SDV) | Presents a set of fields representing a single record. You can order and arrange the fields visually in any way that meets your needs.
> SmartDataField (SDF) | Adds special-purpose functionality to a SDV on a per-field basis. The special functionality can be of any desired sophistication.
> SmartSelect (SSelect) | A specialized SmartDataField representing a data-driven pick list. You would use it for updating a field in one table based on the values drawn from a related table.
> Data communication | SmartB2BObject (SBB) | Transforms message-body blocks of data between 4GL and XML representations based on a protocol (mapping) file that you create.
> SmartSender (SSndr) and SmartReceiver (SRcvr) | Transforms message-body blocks of data in ways that you define. The code you write can be anything from no-ops to the most sophisticated transformations; these are very general tools.
> SmartRouter (SRtr) | Determines which SBB should handle some message received by a SmartConsumer, and starts that object.
> SmartProducer (SProdr) and SmartConsumer (SConsr) | These objects are the SmartObject interface to the SonicMQ messaging system. The SProdr creates message bodies for use by other objects, and inserts them into the message system when complete. The SConsr watches the inbound piplelines and passes incoming messages upstream for processing.
> Action Control | SmartToolbar (STB) | A general-purpose control object, optionally combining a menu-bar system with a toolbar object.
> SmartPanel (SP) | A cluster of dedicated pushbuttons. AppBuilder offers versions for Navigation, Update, and Commit.
> Other | Simple SmartObject (SSO) | An unfinished object that serves as a basis for new SmartObject types that you might wish to define.

> In addition to basic 4GL objects and ADM-compliant SmartObjects, AppBuilder also supports the popular ActiveX object type. ActiveX (OCX) objects resemble SmartObjects in implementing complex functionality, but are defined on Microsoft’s ActiveX standard rather than the ADM. ActiveX components are available from many third-party sources.

> Table 1–3 lists the ActiveX (OCX) objects AppBuilder provides for your use.

> Table 1–3: ActiveX (OCX) object types
> Role | ActiveX object | Description
> --- | --- | ---
> Data display and capture | Combo box | An object that combines a fill-in with a hidden selection list. Once the user makes the selection list visible by pressing the associated button, choosing from the listed items sets the current value of the fill-in.
> Spin control | Two opposed pushbuttons and an optional readout field. Operating one of the pushbuttons changes the value of the object either up or down.
> Other | Timer | Generates an event at some regular interval that you specify.

Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095