Evaluates a key label (such as F1) for a key in the predefined set of keyboard keys and returns the corresponding = key code (such as 301) as an INTEGER value. See OpenEdge Development: Programming Interfaces for a list of key codes and key labels.
KEYCODE ( key-label )A constant, field name, variable name, or expression that evaluates to a character string that contains a key label. If key-label is a constant, enclose it in quotation marks (" ").This procedure displays a menu and highlights different selections on the menu depending on which key you press. On the first iteration of the REPEAT block, the COLOR statement tells the AVM to color msg[ix] with the same color used to display messages. Because the initial value of ix is 1, msg[ix] is the first menu selection. Therefore, the first menu selection is colored MESSAGES.
DEFINE VARIABLE msg AS CHARACTER NO-UNDO EXTENT 3.DEFINE VARIABLE ix AS INTEGER NO-UNDO INITIAL 1.DEFINE VARIABLE newi AS INTEGER NO-UNDO INITIAL 1.DISPLAY" Please choose " SKIP(1)" 1 Run order entry " @ msg[1]ATTR-SPACE SKIP" 2 Run receivables " @ msg[2]ATTR-SPACE SKIP" 3 Exit " @ msg[3]ATTR-SPACE SKIPWITH CENTERED FRAME menu NO-LABELS.REPEAT:COLOR DISPLAY MESSAGES msg[ix] WITH FRAME menu.READKEY.IF LASTKEY = KEYCODE("CURSOR-DOWN") AND ix < 3 THENnewi = ix + 1.ELSE IF LASTKEY = KEYCODE("CURSOR-UP") AND ix > 1 THENnewi = ix - 1.ELSE IF LASTKEY = KEYCODE("GO") OR LASTKEY = KEYCODE("RETURN") THEN LEAVE.IF ix <> newi THENCOLOR DISPLAY NORMAL msg[ix] WITH FRAME menu.ix = newi.END.
2. The first IF . . . THEN . . . ELSE statement tests to see if the key code of the key you pressed is CURSOR-DOWN. It also checks whether the value of ix is less than 3. Both of these things are true, so the procedure adds one to the value of newi, making newi equal two.
3. The next two IF statements are ignored because the condition in the first IF statement was true. The procedure continues on the last IF statement: IF ix <> newi THEN COLOR DISPLAY NORMAL msg[ix] WITH FRAME menu.
4. Remember, ix is still 1 but newi is now 2. Thus, ix is not equal to newi. Which means that the IF statement test is true. Therefore, the AVM colors msg[ix], which is still msg[1] (the first menu selection), NORMAL. So the first menu selection is no longer highlighted.
5. Just before the end of the REPEAT block, ix is set equal to newi. Which means that msg[ix]] is now msg[2], or the second menu selection.
6. On the next iteration, the COLOR statement colors msg[ix], that is the second menu selection, MESSAGES. The end result of pressing CURSOR-DOWN is that the highlight bar moves to the second menu selection.
© 2013 Progress Software Corporation and/or its subsidiaries or affiliates. |