COMMAND [KEY] block
Use COMMAND [KEY] blocks as global procedural DIALOG action
handler to execute a sequence of instructions when the user clicks on a button or presses a specific
key. COMMAND defines the text and comment decoration attributes as well as
accelerator keys for a specific action.
COMMAND is especially useful when writing TUI programs; however, it's legal to
use such handler when programming new GUI dialogs, to allow focusable action views
(BUTTON in form can take the focus if bound to a COMMAND
handler).
Declaring a COMMAND block in DIALOG is
similar to an ON ACTION block, except that COMMAND
defines an implicit text and comment decoration attribute.
The name of the action will be the command text converted to lowercase letters.
For example, with the following code:
COMMAND "Open" "Opens a new file"
The name of the action will be "open", and the
default decoration text will be "Open" with
a capital letter.
Note that if you use an ampersand (&) in the command name, some front-ends consider the
letter following & as an Alt-key accelerator, and the letter will be underscored; however,
the ampersand forms part of the action name. For example, COMMAND "&Save"
will create an action with the name "&save". It is not recommended to
use & ampersand characters in action names.
Unlike ON KEY actions, if no explicit action view is defined in the form,
the default action view will be visible for a COMMAND hander (i.e. the automatic
button will appear for this action on the front-end).
Action defaults will be applied by
using the action name. For explicit action views such as a BUTTON in the form
layout, the text/comment defined in the corresponding action default entry will overwrite the values
used in the COMMAND handler. When no explicit action view is defined in the form,
the text/comment defined in the program COMMAND clause take precedence over action
defaults, to display the default action view (button on action frame).
Inside DIALOG instruction, COMMAND blocks
can only be defined as global dialog actions; Sub-dialog
specific COMMAND handlers cannot be defined.
When binding a form BUTTON to a COMMAND handler,
the button can get the focus and will be managed in the tabbing
list, using preferably the FIELD
ORDER FORM option.
When using the optional KEY clause, COMMAND defines
also an implicit accelerator key. The key name must be specified
between parentheses with COMMAND KEY:
COMMAND KEY (F5) "Open" "Opens a new file"
KEY() clause allows a
comma-separated list of keys. Up to four keys can be specified. For new developments, consider using
a single key, or prefer ON ACTION
handlers with a single accelerator definition in action defaults.When using multiple keys in an COMMAND KEY clause, the DIALOG
instruction will assign the specified keys as accelerators:
COMMAND KEY (F5, CONTROL-P, CONTROL-Z) "Open" "Opens a new file"
With the above code example, the action name will be "open"
and accelerators will be F5, CONTROL-P and CONTROL-Z.
KEY() clause will take precedence over accelerators defined with action defaults
corresponding to the action name.The COMMAND [KEY] block specification can also
define a help number with the HELP clause,
to display the corresponding text of the current help file.
COMMAND "Open" "Opens a new file" HELP 34