Previous Next

KEYCODE function
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.
Note:
Syntax 
 
KEYCODE ( key-label )
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 (" ").
Example 
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 SKIP
  WITH CENTERED FRAME menu NO-LABELS.
 
REPEAT:
  COLOR DISPLAY MESSAGES msg[ix] WITH FRAME menu.
  READKEY.
  IF LASTKEY = KEYCODE("CURSOR-DOWN") AND ix < 3 THEN
    newi = ix + 1.
  ELSE IF LASTKEY = KEYCODE("CURSOR-UP") AND ix > 1 THEN
    newi = ix - 1.
  ELSE IF LASTKEY = KEYCODE("GO") OR LASTKEY = KEYCODE("RETURN") THEN LEAVE.
 
  IF ix <> newi THEN 
    COLOR DISPLAY NORMAL msg[ix] WITH FRAME menu.
  ix = newi.
END.
When you press the cursor-down key, the following occurs:
1.
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.
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.
See also 
KEYFUNCTION function, KEYLABEL function

Previous Next
© 2013 Progress Software Corporation and/or its subsidiaries or affiliates.