Página 1 de 1
tbrowse: sair automático após um tempo
Enviado: 15 Nov 2021 00:32
por cjp
Não sei se dá pra tratar disso neste mesmo tópico, ou se seria melhor abrir um novo.
A questão é a seguinte: neste mesmo tbrowse(), não sei porquê, não está funcionando a keysec().
Estou chamando na rotina principal do browse:
A intenção é que ele feche o browse após determinado tempo, como se o usuário teclasse ESC.
O que eu estou fazendo errado? Por que não está funcionando?
tbrowse: atualização da tela
Enviado: 15 Nov 2021 03:00
por Jairo Maia
cjp escreveu:O que eu estou fazendo errado? Por que não está funcionando?
A Sintaxe está errada. Veja a sintaxe:
nKey = Espeficação numérica da tecla a ser colocada no buffer. As constantes definidas em "inkey.ch" são usadas por KeySec()
nTime = Especificação numérica do tempo de espera para colocar a tecla nKey no buffer.
Se for especificado número positivo o tempo será em segundos, se for número negativo, o tempo será na proporção de 1/18.2 segundos.
nCounter = Número de vezes que será colocado a tecla no buffer. Por padrão é 1 vez.
lMode = Se for especificado .T., o tempo é reiniciado após teclar alguma tecla. O padrão é .F., e não reinicia o tempo, a tecla será colocada no buffer teclando ou não algo.
No seu caso, para que ESC seja colocado no buffer após 55 segundos de inoperância, seria:
tbrowse: atualização da tela
Enviado: 15 Nov 2021 09:18
por cjp
Mudei para 1, mas mesmo assim não está funcionando.
Estranho é que uso a keysec() com -1 em outros trechos do meu sistema e funciona.
tbrowse: atualização da tela
Enviado: 15 Nov 2021 09:55
por Jairo Maia
Seu TBrowse está configurado para fazer refresh automático? Para efeito de teste, mude em KeySec() o .T. por .F. para saber se vai funcionar.
tbrowse: atualização da tela
Enviado: 15 Nov 2021 15:49
por cjp
Seu TBrowse está configurado para fazer refresh automático?
Na verdade não sei como fazer isso.
Para efeito de teste, mude em KeySec() o .T. por .F. para saber se vai funcionar.
Mudei, mas continuou não funcionando.
tbrowse: atualização da tela
Enviado: 19 Nov 2021 06:36
por Jairo Maia
cjp escreveu:Mudei, mas continuou não funcionando.
Olá Inácio, então claramente você a colocou em algum lugar em seu TBrowse que ela não está sendo chamada. Para saber mais, somente vendo seu fonte. Verifique se ela está sendo acionada, use o recurso de fazer paradas com hb_Alert("1") hb_alert("2"), etc...
tbrowse: atualização da tela
Enviado: 19 Nov 2021 11:15
por JoséQuintas
A rotina de tbrowse tem um inkey(0)
Altere pra isto:
Pronto. Se em 10 minutos o usuário não teclar nada, sai do inkey e entra o ESC.
tbrowse: atualização da tela
Enviado: 19 Nov 2021 11:18
por JoséQuintas
Ou até melhor:
Código: Selecionar todos
nKey := Inkey(600)
IF nKey == 0
KEYBOARD Chr( K_ESC )
nKey := Inkey(0)
ENDIF
Desse jeito, se existir teste de LastKey() também já fica resolvido.
tbrowse: atualização da tela
Enviado: 19 Nov 2021 15:32
por cjp
Perfeito. Resolvido. Muito obrigado.