Refreshing the display when processing
This topic explains when to use the ui.Interface.refresh()
method.
The AUI tree on the front-end is synchronized with the runtime system AUI tree, when a user interaction instruction (dialog) gives the control back to the end user.
This means that the end user will not see any changes on the screen, as long as the program is doing batch processing, until an interactive statement is reached and waits for an event triggered by the end user.
To show something on the screen while the program is running in a batch procedure, force AUI tree
synchronization by calling the ui.Interface.refresh()
method.
Important: The AUI tree is automatically synchronized by the
runtime system, when dialog intruction gives the control back to the end user. The
ui.Interface.refresh()
method must only be used in specific cases, to refresh the
display while processing. For example, to show a "Please wait" message, or to implement a progress
dialog window with a PROGRESSBAR
. The ui.Interface.refresh()
method should not
be called more often than once in one second.Example
Form file form.per:
LAYOUT
GRID
{
[pb ]
[b1 ]
}
END
END
ATTRIBUTES
PROGRESSBAR pb = FORMONLY.progress,
VALUEMIN=0, VALUEMAX=30;
BUTTON b1: interrupt, TEXT="Interrupt";
END
Program file
main.4gl:
MAIN
DEFINE progress INTEGER
DEFER INTERRUPT
OPTIONS INPUT WRAP
OPEN FORM f FROM "form"
DISPLAY FORM f
LET int_flag = FALSE
FOR progress = 1 TO 30
IF int_flag THEN
EXIT FOR
END IF
DISPLAY BY NAME progress
CALL ui.Interface.refresh()
SLEEP 1
END FOR
END MAIN