SET KEY
 Asigna una invocación de procedimiento a una tecla
------------------------------------------------------------------------------
 Sintaxis

     SET KEY <nCódigoInkey> TO [<idProcedimiento>]

 Argumentos

     <nCódigoInkey> es el valor INKEY() de la tecla que recibe la
     asignación.

     TO <idProcedimiento> especifica el nombre de un procedimiento que
     se ejecuta cuando el usuario pulsa la tecla asignada. Si no se
     especifica <idProcedimiento>, se anula la definición de <nCódigoInkey>
     activa.

 Descripción

     SET KEY es un mandato de teclado que permite la ejecución de un
     procedimiento desde cualquier estado de espera cuando se pulsa una
     tecla designada. Un estado de espera se produce en el momento en el que
     se leen las teclas del teclado excepto cuando se usa INKEY(). Se
     produce al utilizar ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT,
     READ y WAIT. Una vez redefinida una tecla, al pulsarla se ejecuta el
     procedimiento especificado pasando tres parámetros automáticos
     correspondientes a PROCNAME(), PROCLINE() y READVAR(). Los parámetros
     del procedimiento y de la variable son de tipo carácter, mientras que
     el número de línea es de tipo numérico.

     Puede definir un máximo de 32 teclas a la vez. En el arranque, el
     sistema define automáticamente la tecla F1 para ejecutar una rutina
     llamada Help. Si se enlaza un procedimiento con este nombre al programa
     actual y es visible, se invocará pulsando F1 desde un estado de
     espera.

     Tenga en cuenta que los procedimientos SET KEY deben conservar el
     estado de la aplicación (es decir, el aspecto de la pantalla, área de
     trabajo actual, etc) y restaurarlo antes de salir.

     ¡Advertencia!  En CA-Clipper, SET FUNCTION se preprocesa en los
     mandatos SET KEY y KEYBOARD. Esto significa que SET FUNCTION tiene el
     efecto de borrar cualquier SET KEY para el mismo número de tecla y
     viceversa. Esto es incompatible con versiones anteriores que mantenían
     listas separadas de teclas SET FUNCTION y SET KEY.

 Notas

     ■ Prioridad: Las definiciones SET KEY tienen prioridad sobre SET
        ESCAPE y SETCANCEL().

     ■ CLEAR con un procedimiento SET KEY: No utilice CLEAR para
        borrar la pantalla dentro de un procedimiento SET KEY, ya que
        también borra los GET y, por lo tanto, finaliza el READ. Cuando
        necesite borrar la pantalla, utilice CLEAR SCREEN o CLS.

     ■ Finalización de un READ desde un procedimiento SET KEY: La
        tabla siguiente muestra varios modos de finalizar un READ desde
        dentro de un procedimiento SET KEY

        Finalización de un READ desde un Procedimiento SET KEY
        ---------------------------------------------------------------------
        Mandato                Acción
        ---------------------------------------------------------------------
        CLEAR GETS             Termina el READ sin guardar el GET activo
        BREAK                  Termina el READ sin guardar el GET activo
        KEYBOARD Ctrl+W        Termina el READ y guarda el GET activo
        KEYBOARD Esc           Termina el READ sin guardar el GET activo
        ---------------------------------------------------------------------

 Ejemplos

      Este ejemplo utiliza SET KEY para llamar a un procedimiento
        que presenta una lista de números de identificación de cuentas
        cuando el usuario pulsa F2 mientras introduce datos en el campo de
        identificación de cuentas:

        #include   "Inkey.ch"
        //
        SET KEY K_F2 TO DesplazCuentas
        USE Cuentas NEW
        USE Facturas NEW
        @ 10, 10 GET Facturas->Id
        READ
        RETURN

        PROCEDURE DesplazCuentas( cProc, nLinea, cVar )
           IF cVar = "ID"
              SAVE SCREEN
              Cuentas->(DBEDIT(10, 10, 18, 40, {"Compañia"}))
              KEYBOARD CHR(K_CTRL_Y) + Cuentas->Id + ;
                       CHR(K_HOME)
              RESTORE SCREEN
           ELSE
              TONE(100, 2)
           ENDIF
           RETURN

 Ficheros   La biblioteca asociada es CLIPPER.LIB,
            el fichero de cabecera asociado es Inkey.ch.

 To download this example - click here.

See Also: INKEY() KEYBOARD LASTKEY() PROCEDURE PROCLINE()