KEYSEC(), existe outra função que faça a mesma coisa?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Mas onde está o controle do tempo? Não aparece aí. Como ele é feito? Tem inicializador? Esse ENTER é desnecessário, a meu ver. Acho que você não está inicializando a variável de controle de tempo. Daí o erro.
[]'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 do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Eu coloquei o KEYBOARD CHR(13) porque ele tava disparando o descanso logo no início do sistema.

Já o controle do tempo é "drvsstempo*18.204", é uma variável que o usuário diz quanto tempo quer esperar para ativar o descanço vezes 18.204, que é o número de ticks para cada segundo.

Eu teria que fazer outra coisa antes disso tudo?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Variável contadora é uma coisa. Variável de configuração é outra. Quando você inicializa um sistema de proteção de tela, a variável contadora deverá, de início, conter um valor tal que não dispare o protetor. Isso já elimina o ENTER. Por exemplo: começa com X, sendo este X uma cópia da variável de configuração (ou seu default (> 0), se não configurado). No decorrer do tempo, essa variável contadora vai sendo decrementada até chegar em 0, quando o protetor dispara. Se neste tempo alguma tecla for pressionada, você recarrega esta variável com aquele mesmo X. E começa tudo de novo.
[]'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 do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Hum!
Pensei que a ontick fisesse isso automaticamente, como a keysec().

Tu pode fazer um desenho, hehe, um exemplo.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Não. Ela não faz isso automaticamente. Ela apenas executa a função determinada a cada intervalo de tempo. O controle de tempo de disparo do protetor de tela fica a seu cargo.

A grosso modo, você teria, apenas como exemplo:

FT_OnTick({||ScrSavCtrl()},nTicks)

Isso garante a execução do controlador do protetor de tela a cada intervalo de nTicks (o valor que achar conveniente). Esse controlador ao ser executado pela primeira vez, inicializaria o conjunto de controle, incluindo aí a variável que salva a última tecla pressionada (usando LastKey(), por exemplo). Há várias maneiras de fazer isso. Fica por conta de sua imaginação. Só não esqueça de incluir um flag para desativar o processamento de controle enquanto o protetor estiver ativado.

Tente aí. Se não der, mostra o que fez pra gente trocar alguma idéia.
[]'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 do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Achei a função DoIdle() da Fast.Lib que faz a mesma coisa da FT_OnTick(), mas ainda não é idêntica a keysec().
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

A DoInterval(), também da fast.lib faz a mesma coisa, duas funções para fazer a mesma coisa.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ambas (ou pelo menos a DoInterval()) devem usar a mesma função não-documentada do Clipper: _evLow. Portanto, deve dar no mesmo.
[]'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 do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Mensagem por Daniel »

a minha fica assim

Código: Selecionar todos

   xdaniel:= "(43)3423-8445 "
   xdaniel1:= " "
   xdaniel2:= xdaniel3:= 1
   xdaniel5:= Seconds() + 150
   xdaniel7:= Seconds()
   GFonTickx("GfClock", 30)

********************************
Function GFCLOCK(Arg1, Arg2, Arg3)
   Local Local1:= Row(), Local2:= Col(), Arg4, xdantela, xdantela1

   serc:= SetCursor()
   xdaniel4:= SubStr(time(),8,1)
   xdaniel6:= Seconds()
   If NextKey() != 0
      xdaniel5:= Seconds() + 150
   EndIf
   SetCursor(0)
   If xdaniel6 >= xdaniel5 .And. NextKey() == 0
      xdantela1:= SetColor()
      Set Color To
      xdantela:= SaveScreen()
      If CurDir() == "KIPAPEL"
         Do desctela
      ElseIf CurDir() == "JR"
         Do desctel2
      EndIf
      SetColor(xdantela1)
      xdaniel5:= Seconds() + 150
      RestScreen(,,,, xdantela)
   EndIf
   Default Arg1 To 0
   Default Arg4 To SetColor()
   Default Arg2 To MaxCol() - 11
   Default Arg3 To SetColor()
   SetPos(Arg1, Arg2+3)
   dispout(Time(), "W+")
   SetPos(Local1, Local2)
   SetCursor(serc)

   Return Nil
nao sei porque ela tem que ser execultada duas vezes para funcionar, dai e so usar a metade do tempo.
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Daniel!

Para chamar funções de descanso de tela, use a função keysec() da CT.LIB.

Ex.:
SET KEY K_ALT_F10 TO DESCANSO
KEYSEC(K_ALT_F10,nSEGUNDOS,,.T.)

... dica do Eolo.

No meu caso, é que a CTP.lib tá gerando algum conflito com outras libs que uso, tais como: GASP52MP.LIB, FAST.LIB, NANFOR.LIN, PRO_EXO.LIB, DBFNSX.LIB, LFN.LIB, LL.LIB, CMPI.LIB e a lib do blinker.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Mensagem por Daniel »

esta funcao e da lib grump, uso ela pra descansode tela,relogio e para fazer programa de demostracao que funciona 15 minuntos e desliga
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Responder