Defines and creates either a read-only or updateable browse
widget that is created at compile time for use in one or more procedures, or
within a single class.
Note: Does not apply to
SpeedScript programming.
Syntax
DEFINE {[[ NEW ] SHARED ]|[ PRIVATE ]}
BROWSE browse-name
QUERY query-name
[ SHARE-LOCK | EXCLUSIVE-LOCK | NO-LOCK ][ NO-WAIT ]
DISPLAY
{column-list|record[ EXCEPT field...]}
[browse-enable-phrase]
{browse-options-phrase}
[ CONTEXT-HELP-ID expression]
[ DROP-TARGET ]
[ TOOLTIP tooltip]
|
- NEW SHARED BROWSE browse-name
- Defines and identifies a browse widget that can be used by other procedures.
When the procedure containing this statement ends, the browse is
no longer available.
- SHARED BROWSE browse-name
- Defines and identifies a browse that was created in another
procedure with the DEFINE NEW SHARED BROWSE statement.
-
[ PRIVATE ] BROWSE
browse-name
- Defines and identifies a browse widget as a class-scoped object. A class-scoped
handle-based object is not a member of a class, but provides a resource that is
privately available to the class definition similar to a non-shared data element in a
procedure definition. The option to specify the PRIVATE access mode is provided for
readability. You cannot specify PRIVATE when defining a browse widget as a data element
in a method or procedure.
Note: This option is applicable only when defining
a class-scoped browse widget in a class definition (.cls)
file.
- BROWSE browse-name
- Defines and identifies a browse widget whose query you can access only
within the current procedure, class, or method of a class.
- QUERY query-name
- The name of the query to browse. You must have previously defined or
opened the query.
-
[ SHARE-LOCK | EXCLUSIVE-LOCK | NO-LOCK ]
- Specifies the locking mode for records retrieved by the browse widget.
The default locking mode is NO-LOCK. To control locking during preselection
for a query associated with a browse widget, use the SHARE-LOCK,
EXCLUSIVE-LOCK, or NO-LOCK option in the OPEN QUERY statement that
opens the query.
- NO-WAIT
- Specifies not to wait for a record that is currently locked
by another process. Instead, the record in conflict will be made
available in NO-LOCK mode and the LOCKED function for that record
will return TRUE.
- DISPLAY column-list
- Specifies the column items to display in the browse. Note that the
column-list cannot contain widgets other than fill-ins (default),
combo-boxes, and toggle-boxes, and the column-list cannot contain
SKIP options.
DISPLAY
{expression
[ column-format-phase]
[@ base-field]
[view-as-phrase]
}...
|
-
expression
- A field name, variable, constant, or expression to display in each iteration of
the browse frame.
-
column-format-phrase
- Specifies the format for a value displayed in the browse. The
column-format-phrase is a subset of the Format phrase.
[ FORMAT expression ]
[ LABEL label| NO-LABELS ]
[ WIDTH n ]
[ COLUMN-FONT expression ]
[ COLUMN-LABEL label ]
[ COLUMN-DCOLOR expression ]
[ COLUMN-BGCOLOR expression ]
[ COLUMN-FGCOLOR expression ]
[ COLUMN-PFCOLOR expression ]
[ LABEL-FONT constant ]
[ LABEL-DCOLOR expression ]
[ LABEL-BGCOLOR expression ]
[ LABEL-FGCOLOR expression ]
|
- WIDTH n
- Specify a width for the browse column. n represents a
multiplier of the average character width of the column font. Specifying a
width smaller than the format string creates a scrolling browse cell, if the
column is updateable.
For more information on FORMAT strings and label
options, see the Format phrase reference entry. The
column and label color and font options work like those specified in the
browse-options-phrase. If color or fonts are
specified with this phrase, they only affect the specific column and
override similar options specified in the
browse-options-phrase.
- @base-field
- The base-field must be the name of a field or variable; it
cannot be an expression or constant.
The AVM reserves enough space for the
base-field to hold the longest format displayed there. All
right-justified fields (numeric fields that do not use side labels) are right
justified within the reserved area.
To determine the format to use for
displaying the expression at the base-field, the AVM looks at
the following and uses the first format that applies:
- An explicit format used with the expression.
- If the expression is a character string constant, a format that accommodates
that string.
- If the data type of the expression matches that of the
base-field, the format of the
base-field.
- The standard format of the expression as if it were displayed without a
base-field.
-
view-as-phrase
- Specifies the type of widget to use for displaying values in the browse column.
This is the view-as-phrase syntax, which is a subset of the
VIEW-AS phrase:
VIEW-AS combo-box-phrase| TOGGLE-BOX
|
If you do not specify a view-as-phrase, the widget
type for the browse column is FILL-IN, by default.
Note: In a
character interface, the browse column value is always displayed as a FILL-IN
widget no matter what widget type you specify.
For more information,
see the VIEW-AS phrase
reference entry.
- DISPLAY record
- Specifies the record you want to display. If you specify a record, all fields from the
record are displayed unless you use the EXCEPT option to eliminate specific
fields.
See the Record phrase
reference entry for more information.
- EXCEPT field . . .
- Specifies fields that are not displayed in the browse. You can use the EXCEPT option
only if you specify a record name in the DISPLAY option.
-
browse-enable-phrase
- Specifies which fields in the column-list are enabled for
input.
ENABLE
{{field[ HELP string]
[ VALIDATE ( condition , msg-exp ) ]
[ AUTO-RETURN ]
[ DISABLE-AUTO-ZAP ]
}...
ALL [ EXCEPT field]
}
|
List each field or variable from the column-list that you
want enabled. Specify ALL to specify every item in the column-list.
Use the EXCEPT option to exclude specific items when you use the ALL option.
For each field or variable, you can also specify custom help and validation, as
shown in the next two entries.
- HELP string
- Represents a character string that you want to display whenever the user enters the
frame field for the field or variable. When the user leaves the frame field, the AVM
removes the help string from the message area. You must enclose the string in quotation
marks ("").
- VALIDATE ( condition, msg-expression )
- Specifies an expression against which you want to validate the data entered in a
browse cell. The condition is a Boolean expression (a constant, field
name, variable name, or expression) whose value is TRUE or FALSE.
When you use the
VALIDATE option to validate a specific cell, any reference to that cell in
condition is assumed to be the new input value. For example, in
the browse-enable phrase below, the PromiseDate that is compared to
the OrderDate is the new user input, not the existing data:
ENABLE PromiseDate VALIDATE(PromiseDate > OrderDate,
"Promise date must be later than order date").
|
To validate a new value against another new value, use the INPUT qualifier,
as shown:
ENABLE OrderDate PromiseDate VALIDATE(PromiseDate > INPUT OrderDate,
"Promise date must be later than order date").
|
If the value of condition is FALSE, use
msg-expression to display a specific message. You must enclose
msg-expression in quotation marks ("").
The AVM processes
validation criteria whenever the user attempts to leave the browse cell. If the cell
value is not valid, the AVM displays msg-expression in the message
area, causes the terminal to beep, and does not advance out of the browse
cell.
If the user tabs to a cell, makes no changes, and leaves the cell, the AVM
does not process the validation criteria specified with the VALIDATE option until you
press GO (F1). If the user
presses ENDKEY or END-ERROR, or an error occurs, the AVM does not test the validation criteria
specified with the VALIDATE option.
If the input source for the procedure is a
table, the AVM validates each input field (except those with a value of "-"). If the
result of the validation is FALSE, msg-expression is displayed and
the AVM treats the validation as an error.
To suppress the Data Dictionary
validation criteria for a cell, use this VALIDATE option:
- AUTO-RETURN
- Indicates whether the AVM behaves as if the user pressed the RETURN key when the user enters the last allowable character in a browse cell of
the specified browse column.
- DISABLE-AUTO-ZAP
- Indicates whether the AVM should ignore the value of the browse column's AUTO-ZAP
attribute and assume it is FALSE.
-
browse-options-phrase
- Specifies options that affect the browse widget as a whole. The options affect both
the layout and the function of the browse widget. Note that you cannot include
aggregate-phrases (such as TOTAL, MIN, etc.) in this phrase. This is the syntax for
browse-options-phrase:
WITH
{[constant] DOWN [ WIDTH width]|[size-phrase]}
[ FGCOLOR expression]
[ BGCOLOR expression]
[ DCOLOR expression]
[ PFCOLOR expression]
[ LABEL-FONT expression]
[ LABEL-DCOLOR expression]
[ LABEL-FGCOLOR expression]
[ LABEL-BGCOLOR expression]
[ MULTIPLE | SINGLE ]
[ SEPARATORS | NO-SEPARATORS ]
[ NO-ASSIGN ]
[ NO-ROW-MARKERS ]
[ NO-LABELS ]
[ NO-BOX ]
[ FONT constant]
[title-phrase]
[ NO-VALIDATE ]
[ NO-SCROLLBAR-VERTICAL | SCROLLBAR-VERTICAL ]
[ ROW-HEIGHT-CHARS | ROW-HEIGHT-PIXELS ]row-height
[ FIT-LAST-COLUMN ]
[ EXPANDABLE ]
[ NO-EMPTY-SPACE ]
[ DROP-TARGET ]
[ NO-AUTO-VALIDATE ]
|
-
[
constant
] DOWN [ WIDTH
width]
- The constant value is the number of rows displayed in the
browse and must be at least 2. You can optionally specify the width of the browse,
where width is the width of the browse in character units.
A
browse-options-phrase must contain a DOWN option or a
size-phrase.
-
size-phrase
- Specifies the outer size of the browse border. When this option is used instead
of the DOWN option, the AVM determines the number of rows that can be displayed in
the browse. Following is the syntax for size-phrase:
{ SIZE SIZE-PIXELS }width BY height
|
For more information on size-phrase, see the SIZE phrase reference
entry.
A browse-options-phrase must contain a DOWN
option (optionally with a WIDTH option) or a
size-phrase.
- FGCOLOR expression
- Specifies the foreground color for the browse in graphical environments, but not
the label foreground color. The value of expression must be an
integer value that specifies an entry in the color table. This option is ignored
in character environments.
- BGCOLOR expression
- Specifies the background color for the browse in graphical environments. The
value of expression must be an integer value that specifies an
entry in the color table. This option is ignored in character environments.
- DCOLOR expression
- Specifies the display color for the browse in character environments. The value
of expression must be an integer value that specifies an entry
in the color table. This option is ignored in graphical environments.
- PFCOLOR expression
- Specifies the prompt color for the browse in character environments. The value
of expression must be an integer value that specifies an entry
in the color table. This option is ignored in graphical environments.
- LABEL-FONT constant
- Specifies the font of the browse labels.
- LABEL-DCOLOR expression
- Specifies the display color for the browse labels in character environments. The
value of expression must be an integer value that specifies an
entry in the color table. This option is ignored in graphical environments.
- LABEL-FGCOLOR expression
- Specifies the foreground color for the browse labels in graphical environments.
The value of expression must be an integer value that specifies
an entry in the color table. This option is ignored in character
environments.
- LABEL-BGCOLOR expression
- Specifies the background color for the browse labels in graphical environments.
The value of expression must be an integer value that specifies
an entry in the color table. This option is ignored in character
environments.
-
[ MULTIPLE | SINGLE ]
- Specifies whether multiple rows can be selected from the browse or only a single
row at one time. The default is SINGLE.
-
[ SEPARATORS |
NO-SEPARATORS ]
- Specifies whether row and column separators are displayed within the browse. The
default is NO-SEPARATORS.
- NO-ASSIGN
- Disables automatic writes on new data in an updateable browse. If this option is
not specified, data entered into an updateable browse is assigned on any action
that results in a ROW-LEAVE event. This option is intended for use with
user-defined triggers on the ROW-LEAVE event. Essentially, when this option is
specified, you must make all data assignments by way of the updateable
browse.
ON ROW-LEAVE OF my-browse DO:
IF Customer.State:SCREEN-VALUE IN BROWSE my-browse NE "MA" THEN DO:
MESSAGE "Customer is out of state."
RETURN NO-APPLY.
END.
/* Your code. Transaction scope is up to you. */
FIND CURRENT Customer.
IF NOT CURRENT-CHANGED Customer THEN
ASSIGN INPUT BROWSE field1 field2 field3 field4.
ELSE MESSAGE "Record has changed since last read.".
END.
|
In the above example, the code looks for a special case where automatic
database writes are not desirable and prevents them. The body of the trigger
handles other processing before proceeding to commit the changes. First the
trigger refinds the current Customer record and then uses the CURRENT-CHANGED
function to see if it has changed while the user was updating the browse cells.
If it has not changed, the changes are committed. If it has changed, the trigger
would handle that condition, too.
Note that an ASSIGN statement with the
INPUT BROWSE option can be mixed with other assignment types, as
shown:
ASSIGN
Name
a = b
INPUT FRAME my-frame c d
INPUT BROWSE my-browse order-date promise-date
INPUT e.
|
- NO-ROW-MARKERS
- By default, an updateable browse displays row markers, which allow the user to
select currently displayed rows in an updateable browse widget. This option
prevents row markers from being displayed.
- NO-LABELS
- Does not display labels above the columns of the browse.
- NO-BOX
- Does not display a box around the browse. If you do not use this option, the AVM
displays a box around the data you are displaying.
If you are sending data to a
device other than a terminal and you do not use this option, the AVM omits the
sides and bottom line of the box and replaces the top line with blanks.
- FONT constant
- Specifies the font of the browse. Labels also use this font, unless otherwise
specified.
- title-phrase
- Displays a title as part of the top line of the box around the browse. For
example:
TITLE [ DCOLOR expression][ title-string ]
|
The title-string is a constant, field name, variable
name, or expression whose result is a character value. The expression
is the value you want to display as a title. If title-string
is a constant character string, it must be surrounded by quotes ("").
The AVM automatically centers title-string in the top line of
the browse box.
You can use the DCOLOR option to specify the color of the
title under a character user interface.
You cannot specify the title color
or font of a browse in a graphical interface.
- NO-VALIDATE
- Tells the AVM to ignore the validations conditions in the schema for all fields
in the browse.
Since browses do not inherit the NO-VALIDATE option from a parent
frame, if you want a browse to have this option, you must specify it
explicitly.
- NO-SCROLLBAR-VERTICAL | SCROLLBAR-VERTICAL
- Indicates whether the browse displays a vertical scrollbar. The default is to
display the vertical scrollbar.
- ROW-HEIGHT-CHARS | ROW-HEIGHT-PIXELS
row-height
- An integer representing the browse's row height in either characters or
pixels.
This option applies to graphical interfaces only.
- FIT-LAST-COLUMN
- Allows the browse to be displayed so that there is no empty space to the right
and no horizontal scroll bar by potentially widening or shrinking the last browse
column's width.
This option applies to graphical interfaces only.
When
this option is specified, and the last browse column can be fully or partially
displayed in the browse's viewport, then the last browse column's width is
adjusted so that it fits within the viewport with no empty space to its right
and no horizontal scroll bar.
If the last browse column is fully
contained in the viewport with empty space to its right, it grows so that its
right edge is adjacent to the vertical scroll bar.
If the last browse
column extends outside the viewport, it shrinks so its right edge is adjacent to
the vertical scroll bar and the horizontal scroll bar is not needed.
The
default value is FALSE.
Note: The FIT-LAST-COLUMN option performs
the same function as the EXPANDABLE option. Progress Software Corporation
recommends that you use the FIT-LAST-COLUMN option instead of the EXPANDABLE
option. This recommendation includes replacing EXPANDABLE with FIT-LAST-COLUMN
in your current code.
- EXPANDABLE
- If you set a browse's EXPANDABLE option to TRUE, the AVM extends the right-most
browse column horizontally to the browse's right edge, if necessary, to cover any
white space that might appear there — unless you explicitly set the width of the
right-most browse column using the WIDTH-CHARS or WIDTH-PIXELS option. The
expansion of the right-most browse column might occur anytime the browse or
another browse column is resized.
The right-most browse column expands only
when there is no horizontal scroll bar. This is because when there is a
horizontal scroll bar, no white space appears between the right edge of the
right-most browse column and the right edge of the browse.
Note: The EXPANDABLE option performs the same function as the FIT-LAST-COLUMN option.
Progress Software Corporation recommends that you use the FIT-LAST-COLUMN option
instead of the EXPANDABLE option. This recommendation includes replacing
EXPANDABLE with FIT-LAST-COLUMN in your current code.
- NO-EMPTY-SPACE
- Allows the browse to display with no empty space to the right and no horizontal
scroll bar.
You cannot specify both NO-EMPTY-SPACE and FIT-LAST-COLUMN for the
DEFINE BROWSE statement. If you specify both, the compiler displays an error
message. If you set either the NO-EMPTY-SPACE option or the DEFINE BROWSE option
to TRUE and one of them is already TRUE, a warning message displays at run
time.
- NO-AUTO-VALIDATE
- Tells ABL to compile into the code all relevant validations it finds in the
OpenEdge Data Dictionary, but to run the validations only when the code for a
browse or a browse column specifically invokes the VALIDATE() method.
- CONTEXT-HELP-ID expression
- An integer value that specifies the identifier of the help topic for this browse in a
help file specified at the session, window, or dialog box level using the
CONTEXT-HELP-FILE attribute.
- DROP-TARGET
- Indicates whether the user can drop a file onto the object.
- TOOLTIP tooltip
- Allows you to define a help text message for a browse widget. The AVM automatically
displays this text when the user pauses the mouse pointer over a browse widget for which
a ToolTip is defined. You can add or change the TOOLTIP option at any time.
If
TOOLTIP is set to "" or the Unknown value (?), then the ToolTip is
removed from the browse. No ToolTip is the default. ToolTips are supported in Windows
only.
Examples
This
procedure sets up a read-only browse widget for the Customer table. The
browse displays the CustNum and Name fields. A separate frame, f2,
displays more information on the currently chosen Customer.
r-browse.p
DEFINE QUERY q1 FOR Customer.
DEFINE BROWSE b1 QUERY q1 DISPLAY CustNum Name
WITH 17 DOWN TITLE "Customer Browse".
DEFINE FRAME f1 b1
WITH SIDE-LABELS AT ROW 2 COLUMN 2.
DEFINE FRAME f2
WITH 1 COLUMNS AT ROW 2 COLUMN 38.
ON VALUE-CHANGED OF b1 DO:
DISPLAY Customer EXCEPT Customer.Comments WITH FRAME f2.
END.
OPEN QUERY q1 FOR EACH Customer.
ENABLE b1 WITH FRAME f1.
APPLY "VALUE-CHANGED" TO BROWSE b1.
WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW.
|
The VALUE-CHANGED event occurs each time the
user selects a row within the browse widget. The associated database
record is automatically placed into the record buffer. The trigger
on the VALUE-CHANGED event displays that record in frame f2.
The
APPLY statement causes the first Customer record to display before the
user selects a record.
The second example sets up an updateable
browse that displays some fields from the Customer table. Select
a row marker to select a row. Select a cell to edit it. Select a
column label to initiate a search. (The trigger on ROW-LEAVE is only
necessary because the NO-ASSIGN option prevents automatic commitment
of the data when the user leaves a row.)
r-brows2.p
DEFINE VARIABLE method-return AS LOGICAL NO-UNDO.
DEFINE QUERY q1 FOR Customer SCROLLING.
DEFINE BROWSE b1 QUERY q1 NO-LOCK DISPLAY Customer.CustNum Customer.Name
Customer.Phone ENABLE Customer.Name Customer.Phone
WITH 15 DOWN NO-ASSIGN SEPARATORS.
DEFINE BUTTON button1 LABEL "New Row".
DEFINE FRAME f1
SKIP(1) SPACE(8) b1 SKIP(1) SPACE(8) button1
WITH NO-BOX.
ON ROW-LEAVE OF b1 IN FRAME f1 DO: /* No-Assign Browser */
/* If new row, create record and assign values in browse. */
IF b1:NEW-ROW THEN DO:
CREATE Customer.
ASSIGN INPUT BROWSE b1 Customer.Name Customer.Phone.
DISPLAY Customer.CustNum WITH BROWSE b1.
method-return = b1:CREATE-RESULT-LIST-ENTRY().
RETURN.
END.
/* If record exists and was changed in browse, update it. */
IF BROWSE b1:CURRENT-ROW-MODIFIED THEN DO:
GET CURRENT q1 EXCLUSIVE-LOCK.
IF CURRENT-CHANGED Customer THEN DO:
MESSAGE "This record has been changed by another user." SKIP
"Please re-enter your changes.".
DISPLAY Customer.CustNum Customer.Name Customer.Phone WITH BROWSE b1.
RETURN NO-APPLY.
END.
ELSE /* Record is the same, so update it with exclusive-lock */
ASSIGN INPUT BROWSE b1 Customer.Name Customer.Phone.
/* Downgrade the lock to a no-lock. */
GET CURRENT q1 NO-LOCK.
END.
END.
ON CHOOSE OF button1 IN FRAME f1 DO: /* Insert */
method-return = b1:INSERT-ROW("AFTER").
END.
OPEN QUERY q1 FOR EACH Customer.
ENABLE ALL WITH FRAME f1.
WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW
|
Notes
- You
cannot define a SHARED or NEW SHARED browse widget in a persistent
procedure. If you do, ABL raises ERROR on the RUN statement that
creates the procedure.
- You cannot define a SHARED or NEW SHARED browse widget in a class
definition (.cls) file. If you do, ABL generates a
compilation error.
- The vertical scrollbar is displayed with the browse by default
in Windows interfaces. It may be removed by setting the SCROLLBAR-VERTICAL
attribute to FALSE or by specifying NO-SCROLLBAR-VERTICAL in the
DEFINE BROWSE statement. If the horizontal scrollbar is needed,
it is provided by default.
- The vertical scrollbar thumb size reflects the percentage of
rows that are displayed in the viewport relative to the number of
rows in the results list. If all the rows have not yet been read
into the results list, the AVM uses the MAX-DATA-GUESS attribute
to estimate the total size.
- You must put the browse into a frame on the same procedure level
on which the browse is defined. For example, you cannot define a
browse in an outer procedure and then display it in a frame defined
within an internal procedure.
- You cannot display a browse widget in a down frame. The AVM
automatically converts any frame containing a browse to a 1 down
frame.
- You can modify the field values displayed in the current iteration of a browse by using
the WITH BROWSE option of the DISPLAY statement:
DISPLAY {field|{value @ field}}...
WITH BROWSE browse
|
- The browse widget has built-in support
for the HOME, END, PAGE-UP,
and PAGE-DOWN key functions.
- You can specify an application-defined widget ID for a compile-time defined
browse widget using the form-item phrase in either
the FORM statement or the DEFINE FRAME statement. See the FORM statement and DEFINE FRAME statement reference entries for more information.
- ABL treats the query associated with a browse as a scrolling
query. You do not have to specify SCROLLING in the DEFINE QUERY
statement.
- When you execute an OPEN QUERY or REPOSITION statement for the
query associated with the browse, the browse is automatically adjusted to
remain in sync with the query. However, when you execute a GET statement,
the browse is not adjusted. You can use the GET statement to perform
background processing without affecting the browse, but you must
execute a REPOSITION statement to put the query and browse back in
sync.
- The record locking behavior specified for a query in the DEFINE BROWSE
statement overrides the record locking behavior specified with the
OPEN QUERY statement. The default record locking behavior of a browse
widget is NO-LOCK. The default record locking behavior of a query
defined with the OPEN QUERY statement is SHARE-LOCK. If you define
a query and a browse widget for the query without explicitly defining
record locking behavior, the query will have the NO-LOCK behavior.
- For an updateable browse, the AVM re-gets the record with a SHARE-LOCK
when the user first edits a row, if it initially has a NO-LOCK.
The user then can make changes to the updateable cells in the row.
When the user leaves a row with changes (moves to a new row or another
widget), the AVM starts a transaction and gets the record with EXCLUSIVE-LOCK
and NO-WAIT. If the AVM gets the record, the record is updated,
the record is disconnected (removes the lock), the transaction ends,
and the lock is downgraded to its original status. If the get record
with EXCLUSIVE-LOCK fails, the transaction is backed out, an error
message is displayed, and focus remains with the edited browse row with
the changed data. To redisplay the original data, use the DISPLAY...WITH
BROWSE statement.
- All LEAVE triggers for a browse row execute before the row changes are
committed. If the LEAVE trigger returns a NO-APPLY, the changes are
not committed.
- It is also possible to use an updateable browse to add new records
and delete old ones.
- Browse
widgets in Windows have user search capabilities. Special events
allow you to extend these capabilities.
- To select more than one row in a browse widget, press CTRL and then click on the rows
you want to select.
- When an updateable browse enters edit mode, all selected records
are deselected. Essentially, a browse in edit mode ignores multiple
selections.
- The ADD-CALC-COLUMN, ADD-COLUMNS-FROM and ADD-LIKE-COLUMN methods
may be used on a compile-time defined browse to add a dynamic browse
column. If a dynamic browse column in a compile-time defined browse
is made updateable, the browse is changed to a NO-ASSIGN browse
and you become responsible for any database update associated with
it.
- The browse's QUERY attribute can now be set to the Unknown value (?).
If this is done, all browse columns are removed.
- The browse's QUERY attribute can now be changed to any query. Previously,
the new query had to have the same underlying fields as the original
query. If the new query is different, all browse columns are removed.
You must specify new columns with the ADD-CALC-COLUMN, ADD-COLUMNS-FROM,
and ADD-LIKE-COLUMN methods.
See also
ADD-CALC-COLUMN( ) method, ADD-COLUMNS-FROM( ) method, ADD-LIKE-COLUMN( ) method, Class-based data member access, CLOSE QUERY statement, CREATE BROWSE statement, CURRENT-CHANGED function, CURRENT-RESULT-ROW function, DEFINE QUERY statement, DISPLAY statement, FIND statement, FORM statement, Format phrase, Frame phrase, GET statement, NUM-RESULTS function, OPEN QUERY statement, RUN statement