Progress
Programming
Handbook


Character-based Environment

A character-based application can use only one window (the default window), which maps directly to the terminal screen. Progress can accommodate character-based terminal screens of different sizes. The space within the terminal screen, except for the bottom three lines, is available to frames. Progress reserves two of these lines for error messages and messages produced with the MESSAGE statement. Progress reserves the remaining line for status and help messages.

Figure 25–1 shows the basic layout of a character-based Progress window.

Figure 25–1: Character-based Window

Screen Variations

Most character-based terminal screens have 24 display lines, leaving 21 lines for frames. Some have 25 display lines, leaving 22 lines for frames. Other systems might have more display lines. To see how many lines are available, use the SCREEN–LINES function.

Character Display Height

You must size your frames to fit the display area. If you think some users might run your application on terminals that have 24 lines while others might run on terminals with more lines, design your frames to fit in the smaller display area. This way, you can be sure that your frames display in either situation.

Character Display Width

You must also size your frames to fit the width of the terminal screen. Most terminal screens are 80 characters wide, although some are wider. You can take advantage of the entire width of your terminal screen (up to 255 characters) when developing an application. However, if you take advantage of screen width greater than 80 characters, your frames do not fit or look the same on a screen with a smaller width.

Multi-window Simulation

Although character-based applications can only work with the terminal screen as a single window, you can simulate multiple windows by providing a menu bar and changing that menu bar for each simulated window context.

For example, suppose you want to simulate two windows with the following menu bars:

p-wbars.p
DEFINE MENU BasicWindow MENUBAR
  MENU-ITEM mfile      LABEL "File"
  MENU-ITEM medit      LABEL "Edit"
  MENU-ITEM moptions    LABEL "Options"
  MENU-ITEM madvance    LABEL "Advanced..."
  MENU-ITEM mexit      LABEL "E&xit".

DEFINE MENU AdvancedWindow MENUBAR
  MENU-ITEM mspec      LABEL "Special"
  MENU-ITEM medit      LABEL "Edit"
  MENU-ITEM moptions    LABEL "Calculations"
  MENU-ITEM madvance    LABEL "Basic...". 

You can change between “windows” with code like this, used to complete p-wbars.p.

ON CHOOSE OF MENU-ITEM madvance
  CURRENT-WINDOW:MENUBAR = MENU AdvancedWindow:HANDLE.

ON CHOOSE OF MENU-ITEM mbasic
  CURRENT-WINDOW:MENUBAR = MENU BasicWindow:HANDLE.

CURRENT-WINDOW:MENUBAR = MENU BasicWindow:HANDLE.

WAIT-FOR CHOOSE OF MENU-ITEM mexit. 

Of course, a real application likely has submenus in place of most of the menu–item entries shown in this example.

For more information on creating menu bars and submenus, see Menus."


Copyright © 2004 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095