tbrowse: sair automático após um tempo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

tbrowse: sair automático após um tempo

Mensagem 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:

Código: Selecionar todos

keysec(27,55,-1,.t.)
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?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

tbrowse: atualização da tela

Mensagem por Jairo Maia »

cjp escreveu:O que eu estou fazendo errado? Por que não está funcionando?
A Sintaxe está errada. Veja a sintaxe:

Código: Selecionar todos

Keysec( <nKey>, <nTime>, [<nCounter>], [<lMode>] )
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:

Código: Selecionar todos

KeySec( 27, 55, 1, .T. )
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

tbrowse: atualização da tela

Mensagem 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.
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

tbrowse: atualização da tela

Mensagem 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.
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

tbrowse: atualização da tela

Mensagem 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.
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

tbrowse: atualização da tela

Mensagem 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...
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)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

tbrowse: atualização da tela

Mensagem por JoséQuintas »

A rotina de tbrowse tem um inkey(0)

Código: Selecionar todos

nKey := Inkey(0)
Altere pra isto:

Código: Selecionar todos

nKey := Inkey(600)
IF nKey == 0
   nKey := K_ESC
ENDIF
Pronto. Se em 10 minutos o usuário não teclar nada, sai do inkey e entra o ESC.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

tbrowse: atualização da tela

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

tbrowse: atualização da tela

Mensagem por cjp »

Perfeito. Resolvido. Muito obrigado.
Inacio de Carvalho Neto
Responder