Achei uma referência à função KEYSEC() que o
ESBASSO postou e ela diz o seguinte: a função inicia um timer que, transcorrido o tempo desejado, manda um (ou mais) key code pro buffer do teclado. Por ex:
KEYSEC(27,60,2,.t.)
- 27 = tecla a add no buffer (no caso, ESC)
- 60 = 60 segundos
- 2 = quantas vezes a tecla ESC deverá ser add (no caso, 2)
- .t. = quando .T., o timer é resetado qdo se pressiona alguma tecla; quando .F., não (**VER ABAIXO**).
KEYSEC() -> desativa o timer
Só é necessário se for preciso abortar o timer antes da hora
Fiz uns testes e funciona em (parece que) qualquer situação, seja GET, TBrowse, WAIT etc. Só não entendi direito o funcionamento do último parâmetro: diz que o timer é "resetado" (eu entendo que isto quer dizer voltar a zero) quando se tecla qq coisa com o último parâmetro em .T., mas isso não funciona. Estando ele .T. ou .F., o timer dispara os 2 ESC após os 60 segundos, mesmo se pressionando qualquer tecla... ??
Então, fiz o seguinte:
- nos GETs, como eu uso um VALID FUNCAO() em todos os GETs, coloquei um KEYSEC() e KEYSEC(27,60,2,.t.) no inÃcio dessa FUNCAO, aà o timer é resetado quando o usuário passa de um GET pra outro. Se ele ficar paradão em um GET, tchau depois de 60 segundos.
- no TBrowse, incluà um KEYSEC(27,60,2,.t.) na entrada e, a cada tecla pressionada, reseto o timer com KEYSEC() e KEYSEC(27,60,2,.t.). Com isso, se o usuário tecla qq coisa, como um PG DN, ganha 60 segundos. Se ficar paradão, tchau depois de 60 segundos.
* GET
var1:=var2:=0
@10,10 get var1 vali funcao()
@12,10 get var2 vali funcao()
read
* etc.
function funcao
KEYSEC()
KEYSEC(27,60,2,.t.)
* validações...
retu .t. // ou .f.