SET KEY
 Atribui a chamada de uma rotina a uma tecla
------------------------------------------------------------------------------

 Sintaxe

     SET KEY <nCodigoTecla> TO [<idRotina>]

 Argumentos

     <nCodigoTecla> é o valor INKEY() da tecla à qual se atribui a
     rotina.

     TO <idRotina> especifica o nome da rotina que é executada quando se
     aperta uma tecla.  Se <idRotina> nao é especificada, a definiçao
     corrente é liberada.

 Descriçao

     SET KEY permite que uma rotina seja executada a partir de um estado de
     espera quando uma determinada tecla é pressionada.  Um estado de espera
     é qualquer modo que extraia teclas com exceçao de INKEY().  Estes modos
     incluem ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ e WAIT.
     Após uma tecla ser redefinida, pressionando-a executa a rotina corente
     passando automaticamente três parâmetros correspondentes a: PROCNAME(),
     PROCLINE(), e READVAR().  O nome da rotina e da variável sao caractere,
     enquanto que número de linha é numérico.

     Um máximo de 32 teclas pode ser definido ao mesmo tempo.  No start-up
     (início da execuçao), o sistema automaticamante define F1 para executar
     uma rotina de Help (auxílio).  Se uma rotina com este nome é linkada
     junto do programa corrente e está visível, apertando F1 a partir de um
     estado de espera irá invocá-lo.

     Note que rotinas de SET KEY devem ser desenhadas de modo a preservar o
     estado da aplicaçao (isto é, aparência da tela, área de trabalho
     corrente, etc) e restaurá-la após encerrar a execuçao.

     -----------------------------------------------------------------------
     . Aviso

     Em Clipper 5.0, SET FUNCTION é pré processada na forma de SET KEY e
     KEYBOARD.  Isto significa que SET FUNCTION tem o poder de liberar
     qualquer SET KEY para o mesmo número de tecla e vice versa.  Isto é
     incompatível com versoes prévias, as quais mantinham listas separadas
     para SET KEY e SET FUNCTION.
     -----------------------------------------------------------------------

 Notas

       Precedência: SET KEY tem precedência sobre SET ESCAPE e
        SETCANCEL().

       Terminando READ a partir de SET KEY:  Existem várias
        formas de terminar um READ a partir de SET KEY.

        Tabela 4-16: Encerrando um READ a partir de uma rotina SET KEY
        ---------------------------------------------------------------------
        Comando              Açao
        ---------------------------------------------------------------------
        CLEAR GETS           Encerra o READ sem gravar o GET corrente
        BREAK                Encerra o READ sem gravar o GET corrente
        KEYBOARD Ctrl-W      Encerra o READ e grava o GET corrente
        KEYBOARD Esc         Encerra o READ sem gravar o GET corrente
        ---------------------------------------------------------------------

       CLEAR com SET KEY: CLEAR nao deve ser usado para apagar a
        tela dentro de uma rotina de SET KEY pelo fato de emitir um CLEAR
        GETS e encerrar o READ.  Para apagar a tela use CLEAR SCREEN ou CLS.

 Exemplos

     Este exemplo demonstra como usar SET KEY para invocar uma rotina que
     apresente uma lista de itens quando o usuário aperta F2 estando numa
     tela de entrada de dados:

     #include   "Inkey.ch"

     SET KEY K_F2 TO ScrollAccounts
     USE Accounts NEW
     USE Invoices NEW
     @ 10, 10 GET Invoices->Id
     READ
     RETURN

     FUNCTION ScrollAccounts( cProc, nLine, cVar )
        LOCAL s_creen
        IF cVar == "ID"
           s_creen := SAVESCREEN( 0, 0,24,79)
           Accounts->(DBEDIT(10, 10, 18, 40, {"Company"}))
           KEYBOARD CHR(K_CTRL_Y) + Accounts->Id + CHR(K_HOME)
           RESTSCREEN( 0, 0,24,79, s_creen)
       ELSE
           TONE(100, 2)
       ENDIF
       RETURN NIL

 Arquivos:  Biblioteca CLIPPER.LIB. Arquivo header é Inkey.ch.
 To download this example - click here.

See Also: KEYBOARD READ INKEY() SETKEY() Códigos INKEY()