
Associar uma tecla de função à execução de uma PROCEDURE ou inibir a função da tecla.
SET KEY <numero> ON | off
SET KEY <numero> TO [<nome>]
|
<numero> |
representa o código da tecla de controle. |
| 27 (esc) | |
| 5 (seta para cima) | |
| 24 (seta para baixo) | |
| 1 (home) | |
| 19 (seta para esquerda) | |
| 4 (seta para a direita) | |
| 22 (insert) | |
| 7 (delete) | |
| 18 (página para cima) | |
| 3 (página para baixo) | |
| 6 (end) | |
| 9 (tab) | |
| 28 (pf1) | |
| -1 (pf2) | |
| -2 (pf3) | |
| -3 (pf4) | |
| -4 (pf5) | |
| -5 (pf6) | |
| -6 (pf7) | |
| -7 (pf8) | |
| -8 (pf9) | |
| -9 (pf10) | |
|
<nome> |
representa o nome da PROCEDURE que será executada ao se pressionar a tecla designada. |
Executa uma PROCEDURE a partir de qualquer estado de espera. A PROCEDURE executada não pode receber parâmetros. Caso haja necessidade de se passar valores para esta PROCEDURE, os parâmetros devem ser passados como variáveis públicas. Permite que na PROCEDURE executada obtenha-se GETs sem atrapalhar os GETs do programa que a executou.
Muito útil na execução de HELPS .
Para se cancelar a definição anterior da tecla basta não se declarar o nome da PROCEDURE.
SET KEY OFF desabilita a tecla sem perder a configuração anterior.
O exemplo a seguir mostra-nos a utilização de uma PROCEDURE para ajudar na digitação de dados. Note que a PROCEDURE proc_cod ao ser executada, desabilita a tecla que a executa, para evitar reentrância.
$NOLIB
PROG
SET KEY 28 TO proc_cod && Associa a tecla F1 a PROCEDURE proc_cod
SET CONFIRM ON
cod = 0
MESSAGE "Em caso de dúvida pressione F1" BLINK
@ 10,10 SAY "Código do Produto " GET cod PIC "99" ;
VALID cod >=1 .AND. cod <=5
READ
QUIT(0)
PROCEDURE proc_cod
SET KEY 28 OFF && desabilita a tecla F1
DECLARE vet_cod[05] = SPACE(30)
vet_cod[01] = "01 - Parafuso 01"
vet_cod[02] = "02 - Parafuso 02"
vet_cod[03] = "03 - Parafuso 03"
vet_cod[04] = "04 - Parafuso 04"
vet_cod[05] = "05 - Parafuso 05"
opt = ACHOICE(01, 01, 07, 31, vet_cod)
@ 01,01 CLEAR TO 07,31
opt = IIF(opt = -1, opt + 2, opt + 1)
KEYBOARD LEFT(vet_cod[opt], 2)
SET KEY 28 ON && Habilita a tecla F1
RETURN
@ ... GET, ACCEPT, INPUT, KEYBOARD, MENU TO, WAIT e INKEY( ).
