Clipper On Line • Ver Tópico - GET com temporizador

GET com temporizador

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

Moderador: Moderadores

 

Mensagempor Eolo » 02 Set 2007 11:01

Maligno, isso eu sei. O problema é o seguinte: pela dica do Esbasso, eu faço
keysec(254,INT(60),- 1,.t.)
antes dos get e aí, passados os 60 segundos, o READ é terminado.

O que eu quero: se, antes de passados os 60 segundos, o usuário tecla qq coisa, o tempo é reiniciado, ou seja, seria como rodar novamente
keysec(254,INT(60),- 1,.t.) ...
Avatar de usuário

Eolo
Colaborador

Colaborador
 
Mensagens: 1134
Data de registro: 08 Dez 2005 17:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 41 vezes

Mensagempor Hasse » 02 Set 2007 12:35

Bom dia Amigos.

Me lembrei que este assunto já havia passado pelo nosso Fórum, e portanto pesquisei, e encontrei...

Este Post não ajuda ou soluciona ?

http://www.pctoledo.com.br/forum/viewto ... hlight=mgs
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar de usuário

Hasse
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 815
Data de registro: 19 Out 2004 10:30
Cidade/Estado: Jaraguá do Sul - SC
Curtiu: 0 vez
Mens.Curtidas: 24 vezes

Mensagempor janio » 02 Set 2007 12:48

Eolo escreveu:Sim, no Clipper parece simples... É só trocar o inkee(0) por inkey() e ficar monitorando o tempo. Mas e no XHarbour? Num achei o Getsys... :-(


Se não me engano, no xharbour é o TGETLIST.PRG q faz as vezes do GETSYS do clipper.

Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Mensagempor Maligno » 02 Set 2007 15:38

Eolo escreveu:O que eu quero: se, antes de passados os 60 segundos, o usuário tecla qq coisa, o tempo é reiniciado, ou seja, seria como rodar novamente
keysec(254,INT(60),- 1,.t.) ...

Então você terá que criar um identificador que será testado na função fechar_get. Agora, como fazer isso é coisa que não sei. Mas está parecendo que ficaria mais "barato" alterar o GETSYS do Xharbour, ou seja lá o nome que ele tiver. :)
Mas note que você ainda terá o trabalho de descobrir se houve alguma alteração em algum campo da lista.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor Eolo » 02 Set 2007 17:09

Achei uma referência à função KEYSEC() que o ESBASSO postou e ela diz o seguinte: a função inicia um timer que, transcorrido o tempo desejado, manda um (ou mais) key code pro buffer do teclado. Por ex:

KEYSEC(27,60,2,.t.)
- 27 = tecla a add no buffer (no caso, ESC)
- 60 = 60 segundos
- 2 = quantas vezes a tecla ESC deverá ser add (no caso, 2)
- .t. = quando .T., o timer é resetado qdo se pressiona alguma tecla; quando .F., não (**VER ABAIXO**).

KEYSEC() -> desativa o timer
Só é necessário se for preciso abortar o timer antes da hora


Fiz uns testes e funciona em (parece que) qualquer situação, seja GET, TBrowse, WAIT etc. Só não entendi direito o funcionamento do último parâmetro: diz que o timer é "resetado" (eu entendo que isto quer dizer voltar a zero) quando se tecla qq coisa com o último parâmetro em .T., mas isso não funciona. Estando ele .T. ou .F., o timer dispara os 2 ESC após os 60 segundos, mesmo se pressionando qualquer tecla... ??

Então, fiz o seguinte:
- nos GETs, como eu uso um VALID FUNCAO() em todos os GETs, coloquei um KEYSEC() e KEYSEC(27,60,2,.t.) no início dessa FUNCAO, aí o timer é resetado quando o usuário passa de um GET pra outro. Se ele ficar paradão em um GET, tchau depois de 60 segundos.
- no TBrowse, incluí um KEYSEC(27,60,2,.t.) na entrada e, a cada tecla pressionada, reseto o timer com KEYSEC() e KEYSEC(27,60,2,.t.). Com isso, se o usuário tecla qq coisa, como um PG DN, ganha 60 segundos. Se ficar paradão, tchau depois de 60 segundos.

* GET
var1:=var2:=0
@10,10 get var1 vali funcao()
@12,10 get var2 vali funcao()
read
* etc.

function funcao
KEYSEC()
KEYSEC(27,60,2,.t.)
* validações...
retu .t. // ou .f.
Avatar de usuário

Eolo
Colaborador

Colaborador
 
Mensagens: 1134
Data de registro: 08 Dez 2005 17:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 41 vezes

Mensagempor Eolo » 02 Set 2007 17:23

Ah, esqueci de uma coisa: a função KEYSEC() retorna .T. ou .F. se o timer foi ativado ou não...


Maligno, quanto à alteração de algum campo, eu uso a função UPDATED() na saída do READ e funciona 100%. Se qualquer campo foi alterado, ela retorna .T. Aliás, uma exceção: se vc altera qq coisa no primeiro GET e tecla ESC, updated() retorna .F., ele só retorna .T. se vc passar para o próximo GET...

A solução: eu uso uma variável global ALTERA, que guarda .T. ou .F. dependendo do UPDATED(). No começo das rotinas de edição, eu faço ALTERA=.F. e SET KEY 27 TO SCAPE...

function SCAPE
if updated()
  altera=.t.
endi
Avatar de usuário

Eolo
Colaborador

Colaborador
 
Mensagens: 1134
Data de registro: 08 Dez 2005 17:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 41 vezes

Mensagempor Maligno » 02 Set 2007 17:52

Update() pro meu caso não resolve. Mas se serve ao seu propósito, maravilha. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor Eolo » 02 Set 2007 18:30

Me lembrei que este assunto já havia passado pelo nosso Fórum, e portanto pesquisei, e encontrei...
Este Post não ajuda ou soluciona ?
http://www.pctoledo.com.br/forum/viewto ... hlight=mgs
Hasse,
Dei uma olhada no link, mas a solução KEYSEC() é muito mais simples - é só uma linha! - e resolve a parada.
Avatar de usuário

Eolo
Colaborador

Colaborador
 
Mensagens: 1134
Data de registro: 08 Dez 2005 17:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 41 vezes

Mensagempor Hasse » 02 Set 2007 19:18

Valeu.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar de usuário

Hasse
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 815
Data de registro: 19 Out 2004 10:30
Cidade/Estado: Jaraguá do Sul - SC
Curtiu: 0 vez
Mens.Curtidas: 24 vezes

Mensagempor Hasse » 02 Set 2007 20:53

Colegas.

Partindo do princípio que se deseja introduzir uma alteração, como por exemplo, no Keysec.prg ou no Win32prn.prg, como se faz para que ela esteja disponível no xHarbour na hora de compilar ?
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar de usuário

Hasse
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 815
Data de registro: 19 Out 2004 10:30
Cidade/Estado: Jaraguá do Sul - SC
Curtiu: 0 vez
Mens.Curtidas: 24 vezes

Mensagempor ederxc » 03 Set 2007 07:58

:)Pos Essa função veio direto e colou em mim , explendido , matou a charada de tempo do TBrowse()


XH na cabeZZZZZzzzzzzzzzzzzzzza.....


:)Pos
C:\Xharbour\Xdev\Fw\VSX
ederxc
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 613
Data de registro: 15 Set 2006 08:40
Cidade/Estado: Pedreira -SP-
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor janio » 03 Set 2007 08:31

Hasse escreveu:Colegas.

Partindo do princípio que se deseja introduzir uma alteração, como por exemplo, no Keysec.prg ou no Win32prn.prg, como se faz para que ela esteja disponível no xHarbour na hora de compilar ?


Oxente,

Inclua esses prg's no seu script de compilação

ou

Entre em contato com algum desenvolvedor do xharbour para que ele inclua essa alteração no CVS. Dessa maneira todos se beneficiarão da modificação.

Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

GET com temporizador

Mensagempor lugab » 26 Ago 2018 23:40

Obrigado, Esbasse e Eolo,

Problema resolvido
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Linguagemclipper e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro