Página 2 de 2
Enviado: 28 Nov 2007 11:20
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.
Enviado: 28 Nov 2007 11:34
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?
Enviado: 28 Nov 2007 11:43
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.
Enviado: 28 Nov 2007 11:46
por clodoaldomonteiro
Hum!
Pensei que a ontick fisesse isso automaticamente, como a keysec().
Tu pode fazer um desenho, hehe, um exemplo.
Enviado: 28 Nov 2007 13:07
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.
Enviado: 28 Nov 2007 18:31
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().
Enviado: 28 Nov 2007 18:47
por clodoaldomonteiro
A DoInterval(), também da fast.lib faz a mesma coisa, duas funções para fazer a mesma coisa.
Enviado: 28 Nov 2007 19:14
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.
Enviado: 29 Nov 2007 11:24
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.
Enviado: 29 Nov 2007 12:53
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.
Enviado: 29 Nov 2007 15:43
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