Movement in the character environment is based on ``tab groups'', where different segments (subforms) are traversed by pressing the <Tab> key. For example, a dialog box might have a set of radio buttons, a set of text fields, and a OK-Cancel-Help set of buttons in the bottom of the frame. The <Tab> key would be used to move between each of the three areas, while the arrow keys would be used to move between a group of related widgets (for example, from one radio button to the next or between text fields).
In some instances, widgets within embedded subforms will not be reachable via <Tab> unless they are explicitly included by the application into a tab group. SaSetTabGroups(3tlib) should be used with SaSetFocusList to define the tab groups. As discussed earlier, do not include the OK button in the list of tab groups. Note that setting the tab groups only effects the character mode -- in the graphical mode <Tab> moves the user through the widgets in the order they were created. Hence the need for autonavigation, which benefits both graphical and character modes.
SaSetFocus(3tlib) describes the interface for defining traversal. Focus lists and tab groups control the movement of widget focus after <Return> and <Tab> keystrokes, respectively. In some instances, widgets within embedded subforms will not be reachable via <Tab> unless they are explictly included by the application into a tab group.
Movement should be from left to right, top to bottom. Be sure tab groups are visually identifiable. Configure <Tab> for expected usage based on task flow for each screen.
The <Esc> key should cancel the dialog or operation. This can be accomplished by using -cancelButton CANCEL in the VtFormDialog call, where CANCEL is the identifier for the cancel pushbutton. See VtFormDialog(1vtcl) for more information.