Function Key Stacking |
DEVELOPER |
Function Keys can be stacked and are processed in the reverse order of stacking. You can stack up to a maximum of 30 Function Keys and any attempts to add more are silently ignored until space becomes available. The new Global Logic of FnKeyStack enables this stacking.
For example:
FnKeyStack("EXPAND/CONTRACT")
FnKeyStack("ADD MODE")
This changes the mode to ADD, and forces the toggle expand or contract behaviour in Paging Cycles.
FnKeyStack accepts:
“EXPAND/CONTRACT" - This is like the user pressing F9 in a Paging Screen, changing its state after it has been entered.
"RETURN"
"HELP"
"RIGHT ARROW"
"LEFT ARROW"
"DOWN ARROW"
"UP ARROW"
"CANCEL"
"END OF DATA"
"PAGE DOWN"
"PAGE UP"
"BOTTOM"
"TOP"
"EDIT MODE"
"ADD MODE"
"CHANGE MODE"
"INSERT MODE"
"WINDOW"
The effect is the same as pressing equivalent key.
Note: Exception for DELETE MODE - When delete mode is stacked, the smooth mode option is ignored and the screen is only placed in delete mode. |
The user key stack is cleared and reset by the PROIV Virtual Machine at the following points:
-
After any error message appears.
-
When trying to move to an inaccessible field using the mouse.
-
When moving from a higher numbered field to a lower numbered field using return field, logic or the mouse.
-
After executing a FLD statement.
-
On encountering a locked record, or read error on file read
-
Each Global Function and cycle has its own stack which is cleared on entry. The caller's stack is restored on return.
-
When clicking on a Flat Cycle field using Active Paging
-
After End of Data processing initiated after the Last Read field has been encountered.
-
Before a Function Request Prompt appears.
-
Using Property logic to force a screen refresh.
-
At the start of a Screen function.
Warning: If FnKeyStack is used in logic where the logic itself is initiated by the command, if you do not use a suitable 'toggle' then it is easy to cause a loop. Mode logic is susceptible to this issue. |
Section links:
FnKeyStack contains further details and examples of how to use the Global Logic.
Topic ID: 500551