skip to main content
OpenEdge Development: AppBuilder
Introduction : Concepts and terminology
Concepts and terminology
You will find it easier to use AppBuilder if you understand some related concepts and terminology.
External versus internal procedures
In ABL terminology, external procedure is the usual term for a separate subprogram module that exists as a set of related files on disk and can be independently developed and compiled. An external procedure is not a procedure in the sense of being a defined ABL subprogram that begins with the reserved word PROCEDURE or FUNCTION, but it is callable in much the same way. An external procedure’s main filename serves as its identifier, and you can use it in references; for example:
RUN example.w.
External procedures typically have some number of internal procedures and functions defined locally to them. Because these internal procedures and functions implement the external procedure’s repertoire of behaviors, they are often known as methods. They are defined as normal ABL subprograms and begin with one of the reserved words PROCEDURE or FUNCTION.
AppBuilder objects
AppBuilder provides for your use a full array of basic ABL objects, several powerful ADM SmartObjects, and even three ActiveX (OCX) objects.
Basic objects are objects that are available directly as part of ABL, 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 lists the basic ABL objects available in AppBuilder. The descriptions represent how the objects appear under Windows.
Table 1: Basic ABL object types
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.
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.
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
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.
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.
(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 an integer; a built-in readout displays the current value.
Note: You can assign a slider to visualize an INTEGER or INT64 field or variable. However, the slider cannot display values less than ‑32,768 and greater than 32,767.
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
A field‑level object that a user typically selects to invoke some action. AppBuilder offers one generic button plus others predefined for special purposes.
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. ABL supports many different graphic formats under Windows.
SmartObjects are much more complex than the objects listed in Table 1. True subprogram modules, SmartObjects are external procedures that may contain hundreds of lines of ABL 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 2 lists the SmartObjects available in the current release, and the abbreviations used elsewhere in this document.
Table 2: SmartObject types
Outermost Smart organizer object. Acts as a container and integrator for other objects, including other SmartContainers such as SmartFrames, etc.
A Smart, special‑purpose frame object supported by a dedicated window.
Allows you to create reusable Smart layouts not suited to implementation as SmartDialogs.
Implements the tabbed‑file‑folder metaphor for managing paged interface displays.
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
An object that provides data binding between a ProDataSet and ADM visual components.
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.
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.
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
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.
Presents a set of fields representing a single record. You can order and arrange the fields visually in any way that meets your needs.
Adds special‑purpose functionality to a SDV on a per‑field basis. The special functionality can be of any desired sophistication.
A specialized SmartDataField that allows users to add Large Object (LOB) fields that do not use the default visualization.
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.
Transforms message-body blocks of data between ABL and XML representations based on a protocol (mapping) file that you create.
(SSndr) and
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.
Determines which SBB should handle some message received by a SmartConsumer, and starts that object.
(SProdr) and
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
A general‑purpose control object, optionally combining a menu‑bar system with a toolbar object.
A cluster of dedicated buttons. AppBuilder offers versions for Navigation, Update, and Commit.
An unfinished object that serves as a basis for new SmartObject types that you might wish to define.
In addition to basic ABL objects and SmartObjects, AppBuilder also supports the 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 3 lists the ActiveX (OCX) objects AppBuilder provides for your use.
Table 3: ActiveX (OCX) object types 
ActiveX object
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 buttons and an optional readout field. Operating one of the buttons changes the value of the object either up or down.
Generates an event at some regular interval that you specify.