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
Moderador: Moderadores
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
problema com a keysec() no Harbour
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
problema com a keysec() no Harbour
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á?
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
?ntecla2Isso significa que o keysec não está funcionando, estou certo? Por que será?
Inacio de Carvalho Neto
problema com a keysec() no Harbour
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.
Código: Selecionar todos
if variável>90000
return(0)
endifDe qualquer forma, obrigado a todos que ajudaram.
Inacio de Carvalho Neto
problema com a keysec() no Harbour
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)
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
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
Código: Selecionar todos
My_keysec(27,10,1,.T.)A minha intenção é limitar qm 10s o tempo de espera pra q alguma opção seja escolhida no Menu. O q vcs sugerem
lugab
problema com a keysec() no Harbour
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:
2. quando vc tecla ESC, na execução do MENU TO, a variável sai com 0. Então:
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?
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() -> 0Có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
endiSe o programa está inativo é porque não tem ninguém usando, então quem vai ver a mensagem?
problema com a keysec() no Harbour
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 :{
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 :{
lugab

