[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
SET KEY
Assign a procedure invocation to a key
------------------------------------------------------------------------------
Syntax
SET KEY <nInkeyCode> TO [<idProcedure>]
Arguments
<nInkeyCode> is the INKEY() value of the key that receives the
assignment.
TO <idProcedure> specifies the name of a procedure that executes
when the user presses the assigned key. If <idProcedure> is not
specified, the current <nInkeyCode> definition is released.
Description
SET KEY is a keyboard command that allows a procedure to be executed
from any wait state when a designated key is pressed. A wait state is
any mode that extracts keys from the keyboard except for INKEY(). These
modes include ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ and
WAIT. After a key is redefined, pressing it executes the specified
procedure, passing three automatic parameters corresponding to
PROCNAME(), PROCLINE(), and READVAR(). The procedure and variable
parameters are character data type, while the line number is numeric
data type.
You may define a maximum of 32 keys at one time. At startup, the system
automatically defines the F1 key to execute Help. If a procedure with
this name is linked into the current program and it is visible, pressing
F1 from a wait state invokes it.
Note that SET KEY procedures should preserve the state of the
application (i.e., screen appearance, current work area, etc.) and
restore it before exiting.
Warning! In CA-Clipper, SET FUNCTION is preprocessed into the SET
KEY and KEYBOARD commands. This means that SET FUNCTION has the effect
of clearing any SET KEY for the same key number and vice versa. This is
incompatible with previous releases, which maintained separate lists of
SET FUNCTION keys and SET KEY keys.
Notes
. Precedence: SET KEY definitions take precedence over SET
ESCAPE and SETCANCEL().
. CLEAR with a SET KEY procedure: Do not use CLEAR to clear the
screen within a SET KEY procedure since it also CLEARs GETs and,
therefore, terminates READ. When you need to clear the screen, use
CLEAR SCREEN or CLS instead.
. Terminating a READ from a SET KEY procedure: The following
table illustrates several ways to terminate a READ from within a SET
KEY procedure.
Terminating a READ from a SET KEY Procedure
---------------------------------------------------------------------
Command Action
---------------------------------------------------------------------
CLEAR GETS Terminates READ without saving current GET
BREAK Terminates READ without saving current GET
KEYBOARD Ctrl-W Terminates READ and saves the current GET
KEYBOARD Esc Terminates READ without saving current GET
---------------------------------------------------------------------
Examples
. This example uses SET KEY to invoke a procedure that presents
a picklist of account identification numbers when the user presses F2
while entering data into the account identification field:
#include "Inkey.ch"
//
SET KEY K_F2 TO ScrollAccounts
USE Accounts NEW
USE Invoices NEW
@ 10, 10 GET Invoices->Id
READ
RETURN
PROCEDURE ScrollAccounts( cProc, nLine, cVar )
IF cVar = "ID"
SAVE SCREEN
Accounts->(DBEDIT(10, 10, 18, 40, {"Company"}))
KEYBOARD CHR(K_CTRL_Y) + Accounts->Id + ;
CHR(K_HOME)
RESTORE SCREEN
ELSE
TONE(100, 2)
ENDIF
RETURN
Files Library is CLIPPER.LIB, header file is Inkey.ch.
See Also:
INKEY()
KEYBOARD
LASTKEY()
PROCEDURE
PROCLINE()
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson