Concurrent Panels |
|
PxPlus supports multiple active windows. To create a panel that logically attaches to the current panel (in other words, leaves the current panel active and shares controls), an & (ampersand) option is added to the panel definition at run time. This attaches the new panel to the current one.
Technically, there is no limit to the number of common/active panels that the system will support; however, due to table constraints, the maximum number of common/active windows allowed in NOMADS is five (the main window plus four active windows).
The number of interactive controls on a concurrent panel is limited to 199 and will affect the number of controls allowed on the parent panel. See Maximum Number of Controls.
(Support to increase the maximum number of controls on a panel was added in PxPlus 2021.)
When an active panel is created, all the controls are assigned unique CTL values. If the current control being created already exists in another active window (has the same control name), the control is not created, and a message is displayed indicating the existence of duplicate controls. This message is only displayed once.
All variables are shared between all panels.
Group names and the CHANGE_FLG variable are passed across all active panels. Duplicate group names are allowed. From any active panel, you can launch a stand-alone window using the existing panel invoke commands...LINK, JUMPTO, PROCESS. Common/active windows should be defined as a Dialogue type. See Object List.
The Drag and Drop Utility can be used to drag and drop between concurrent windows.
(Support for drag and drop between concurrent windows was added in PxPlus 2020.)
The three ways to invoke an active panel are listed below.
Example:
Merge-Jumpto "panel","library"
If the panel is in the current library, you do not need to include the library name.
REPLACEMENT_SCRN$="panel name"
REPLACEMENT_LIB$="optional library name"
%NOMAD_CONCURRENT_WDW=1
Example:
REPLACEMENT_SCRN$="PANELA",%NOMAD_CONCURRENT_WDW=1;
PERFORM "*winproc;overlay_screen"
CMD_STR$="U"+"panel name, library name"
Example:
CMD_STR$="UPNLA,LIB1.EN"
CMD_STR$="UPNLA" (if panel is in the current active library)
All panels (including the main panel and all attached active panels) can be closed by either clicking the X (Close) button in the top right corner of the main panel or using one of the options listed below. The On Exit logic for each window is executed just before the window is closed.
The CMD_STR$ variable can be used to close a specific concurrent window. The format is as follows:
CMD_STR$="ENDPANEL, panel name, library"