Página 4 de 4
problema com a keysec() no Harbour
Enviado: 01 Jul 2013 17:54
por Jairo Maia
Olá Inácio,
Na verdade coloquei o TypeaHead apenas para garantir que o alert() fosse exibido, já que o evento do teclado está sendo capturado pela variável nTecla2, que está antes dele. Teoricamente após 20 segundos deveria aparecer a tecla 27 (Esc). Muito estranho.
Confesso que não tenho nenhuma ideia...
problema com a keysec() no Harbour
Enviado: 01 Jul 2013 23:10
por cjp
Entendi.
Mas será que teria mesmo que retornar o 27?
Ao dar enter, ele entra na responde2() e já toma a ntecla2=13. Daí entra no alert e não sai enquanto eu não der outro enter.
Daí eu testei sem o alert. Substitui por
Só que ainda assim não funciona. Com o clear typeahead, na primeira vez retorna 13, depois apenas 0, sempre. Sem ele, ele retorna sempre 13.
Isso significa que o keysec não está funcionando, estou certo? Por que será?
problema com a keysec() no Harbour
Enviado: 03 Jul 2013 02:02
por cjp
Resolvi o meu problema criando um atalho: coloquei uma variável pública numérica antes de chamar a função responde2(), coloquei um ++ nela no início da responde2() e um
Resolveu. Mas sei que não é a solução ideal.
De qualquer forma, obrigado a todos que ajudaram.
problema com a keysec() no Harbour
Enviado: 16 Mai 2014 17:45
por lugab
Amigos, eu uso o Habour 3.0 (modo console)
O Eolo me instruiu q o comando " keysec(27,10,,.T.) " retorna para Lastkey() o código 27, após 10 segundos de inatividade no teclado, Com ele funciona bonitinho, mas isso não está acontecendo com meu programa.
E pra piorar, apesar do "Clear TypeHead" no início do código, na primeira execucao o laskey() já desce preenchido com 13 (enter)
Código: Selecionar todos
Tk=0
*------------
Do Whil .T.
*-----------
Op0=0
Clear Typeahead
@ 5,3 clea to 22,78
@ 06,23 to 16,52 double
@ 06,23 to 08,52 double
@ 07,25 SAY " Entradas"
@ 09,25 prom "1 - Notas Fiscais"
@ 10,25 prom "2 - Outras Entradas"
@ 11,25 prom "3 - Pedidos"
@ 12,25 prom "4 - Tela De Custos"
@ 13,25 prom "5 - Series "
@ 14,25 prom "6 - Itens abaixo da media"
@ 15,25 prom "9 - fim"
keysec(27,10,,.T.)
Tk=lastkey()
if Tk=27
Alert("Programa encerrado por inatividade.....",,,,,1)
tela()
retu
endif
Menu to Op0
Do Case
Case Op0=7
retu
Case op0=6
do rot001
endcase
enddo
Eu experimentei a sugestão do Jairo, mas a linha
Retorna 27 sempre, mesmo que eu tecle algum número antes de 10 segundos
A minha intenção é limitar qm 10s o tempo de espera pra q alguma opção seja escolhida no Menu. O q vcs sugerem 
problema com a keysec() no Harbour
Enviado: 16 Mai 2014 20:27
por Eolo
Lugab,
1. nunca consegui entender direito nem usar o CLEA TYPE.
O que eu faço (e funciona) é forçar o lastkey() a retornar 0:
Código: Selecionar todos
keyb chr(0)
inkey() // descarrega o buffer
? lastkey() -> 0
2. quando vc tecla ESC, na execução do MENU TO, a variável sai com 0. Então:
Código: Selecionar todos
* ...
keysec(27,10,,.T.)
menu to cho
if cho=0
retu // usuario teclou ESC ou a KEYSEC() derrubou ele
elseif cho=1
* faz isso
elseif cho=2
* etc
endi
Será que a sua mensagem "Programa encerrado por inatividade" não tá sobrando, não?
Se o programa está inativo é porque não tem ninguém usando, então quem vai ver a mensagem?
problema com a keysec() no Harbour
Enviado: 16 Mai 2014 21:44
por lugab
Eita.... é agora q esse topicão chega ao fim, pq o Eolo matou a charada...
Então, geral, em vez de usarem "Clea Typeahead", troquem por "keyb chr(0)" que ai o "KeySec()" funciona. Comigo mesmo, funcionou.
Muito Obrigado, Eolo :{