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

Código: Selecionar todos

?ntecla2
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

Código: Selecionar todos

if variável>90000
return(0)
endif
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

Código: Selecionar todos

My_keysec(27,10,1,.T.)
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 :{