Finding rows matching a pattern
List controllers implement a built-in find. This feature can be disabled if not required.
The DISPLAY ARRAY
and INPUT ARRAY
blocks
support the built-in find feature by default.
This feature works with any list container (TABLE
, TREE
, SCROLLGRID
).
The built-in find creates automatically the "find" and "findnext" actions. These actions can be decorated, enabled and disabled as regular actions.
If the dialog defines an explicit ON ACTION find
or ON ACTION
findnext
, the default built-in find is disabled.
On validation with the OK button, the dialog starts to search a row where a field value matches
the value entered in the find dialog. The "find" action starts the search from the current row (and
in the field after the current field, if the dialog is an INPUT ARRAY
).
On mobile devices (without a physical keyboard), since the Ctrl-F accelerator cannot be
triggered, there is by default no way to trigger the "find" action. If needed, add a dedicated
action view with the name "find" to the toolbar, topmenu or set the DEFAULTVIEW=YES
action default attribute for this action.
After a "find" action, the user can trigger the "findnext" action (default accelerator is Ctrl-G), in order to continue the search, without opening the find dialog again (the current search value will be reused).
By default, any table column is scanned, but the user can select a specific column in the find dialog box, as long as a column title is available. Case-sensitive or insensitive search as well as wraparound options are also available.
Only rows in memory can be searched. When using the paged-mode (ON FILL
BUFFER
), the built-in search is disabled. When implementing dynamic tree views, the built-in find will only search the
tree nodes available in the program array.
The value entered in the find dialog is compared to type of columns, except columns using the
type TEXT
or BYTE
.
The comparison is based on the formatted value. For example, a MONEY
column will
display values formatted with the currency symbol. To match values in that column, the user must
enter exactly the same value (that is with the currency symbol and the correct decimal
separator).
Only text widgets displaying values are searched. Columns using widgets such as images,
radio-groups, checkboxes are not searched. Furthermore, the find function ignores
PHANTOM
fields, hidden fields and fields defined with the
INVISIBLE
attribute.
With COMBOBOX
fields, the find searches in the visible values of combobox
items.
When the dialog is an INPUT ARRAY
and no specific search column is selected in
the find dialog, the search scans each cell. The search starts in the current row, after the current
field. If no cell value matches in the current row, the search continues on the first field of the
next row.
The built-in find feature is also available in text
mode. In graphical mode, the default keyboard accelerator is Ctrl-F. When using text mode,
the accelerator is the /
slash key.