SetKey() é uma funçao de tratamento de teclado utilizada para configurar ou questionar a ação automática associada a um tecla específica durante um estado de espera. Um estado de espera é qualquer modo que espera por uma teclagem, exceto InKey(), mas incluíndo ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ e WAIT. Podem ser atribuídas no máximo 32 teclas por vez. Na inicialização, o sistema automaticamente atribui à tecla F1 a execução de uma rotina ou função definida pelo usuário chamada Help. Quando uma tecla atribuída for pressionada durante um estado de espera, a associada recebe ProcName(), ProcLine(), e ReadVar() como parâmetros e é executada, através da função EVal(). Não é necessário, porém, relacionar os argumentos ao se especificar a se não planeja usá-los no bloco de código. SetKey() é semelhante ao comando Set Key, o qual associa a chamada de uma rotina a uma tecla.
// Insere um SetKey SetKey(VK_F12, {|| MsgAlert( "A tecla F12 foi pressionada" )}) // Apaga um SetKey SetKey(VK_F12, {||})
#Include "protheus.ch" User Function SeuPrograma() Static oMainWnd DEFINE MSDIALOG oDlg TITLE "Titulo" FROM 0,0 to 500,500 of oMainWnd PIXEL //seu codigo SetKey(VK_F4, {|| Alert("Acionado a tecla F4") }) //Seta um bloco de código para sua tecla ACTIVATE MSDIALOG oDlg CENTERED SetKey(VK_F4,{||}) //Limpa a tecla para nao ser acionado fora da sua rotina Return