BEFORE INPUT block
BEFORE INPUT block in singular and parallel INPUT, INPUT ARRAY dialogs
In a singular INPUT, INPUT ARRAY instruction, or when
used as parallel dialog, the BEFORE INPUT is only executed once when the
dialog is started.
The BEFORE INPUT block is executed once at dialog startup, before the
runtime system gives control to the user. This block can be used to display messages to the user,
initialize program variables and set up the dialog instance by deactivating unused fields or actions
the user is not allowed to execute.
INPUT BY NAME cust_rec.* ...
BEFORE INPUT
MESSAGE "Input customer information"
CALL DIALOG.setActionActive("check_info", is_super_user() )
CALL DIALOG.setFieldActive("cust_comment", is_super_user() )
...
The fields are initialized with the defaults values before the BEFORE
INPUT block is executed. When the INPUT instruction uses the
WITHOUT DEFAULTS option, the default values are taken from the program
variables bound to the fields, otherwise (with defaults), the DEFAULT
attributes of the form fields are used.
Use the NEXT FIELD control instruction in the BEFORE
INPUT block, to jump to a specific field when the dialog starts.
BEFORE INPUT block in INPUT and INPUT ARRAY of procedural DIALOG
In an INPUT or INPUT ARRAY sub-dialog of a procedural
DIALOG instruction, the BEFORE INPUT block is executed when the
focus goes to a group of fields driven by the sub-dialog. This trigger is only invoked if a field of
the sub-dialog gets the focus, and none of the other fields had the focus.
When the focus is in a list driven by an INPUT ARRAY sub-dialog, moving to
a different row will not invoke the BEFORE INPUT block.
BEFORE INPUT is executed after the BEFORE DIALOG
block andbefore the BEFORE ROW, BEFORE FIELD
blocks.
In this example, the BEFORE INPUT block is used to set up a specific
action and display a message:
INPUT BY NAME p_order.*
BEFORE INPUT
CALL DIALOG.setActionActive("validate_order", TRUE)