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

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

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:

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

Mensagem por clodoaldomonteiro »

Olá amigos!

Estou tentando usar a keysec() da ctp.lib no meu sistema, só que dá pau, devido ao uso de outras libs, tais como gaspro, nanfor, pro_exo e outras, que não podem sair de circulação.

O que eu quero é uma função idêntica ou parecida à keysec(), que dispare uma tecla depois de um certo tempo, pois estou fazendo alguns descanços de tela.

Desde já agradeço a atenção.
Editado pela última vez por clodoaldomonteiro em 26 Nov 2007 01:20, em um total de 1 vez.
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 »

Acho que a melhor forma de fazer esse descanso de tela sem o uso de KeySec() seria fazer rodar uma função em background com uma contagem de tempo. Pra isso você pode usar, por exemplo, a biblioteca NanFor, que possui uma função exatamente pra isso: FT_OnTick(). Tem também a BG_EVENTS (acho que é esse o nome), que pode ser encontrada no site The Oasis.
[]'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 »

Valeu Malígno!

Tu é rápido no gatilho mermo.
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 »

Cara!
Testei mas não deu certo e num achei a bg_events.
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 »

clodoaldomonteiro escreveu:Cara!
Testei mas não deu certo e num achei a bg_events.
Por quê não deu certo?
O bg_events está neste link aqui, mas atende pelo nome de BGEV5.ZIP.
[]'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 »

Malígno!
Fiz de acordo com o exemplo:
ft_ontick("caos",10).

"Caos" é o nome da função que faz cair as letras, o descanço de tela.
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 »

E não funcionou? O que acontece?
[]'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 »

Não acontece nada.

Nomeu prg mãe eu chamo uma lib que roda descasos de tela, e tentei rodar a ontick e não mostrou nada.

Eu usei o V5 para descompilar a lib de descanços de tela e lá vi que ele usa a função keysec, só que quando pego esses prgs para incorporar ao meu sistema rega alguns erros, não sei porque.

Ou seja, acho que o erro tá no modo como eu compilo, eu acho, por isso quero saber se tem alguma função similar à 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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Essa função configurada na FT_OnTick() deveria, a princípio, medir a passagem do tempo e ou algum outro parâmetro e ela, quando for apropriado, disparar uma outra função para o descanso de tela. Faça esse teste. Configure na FT_OnTick() uma função que dispara uma outra quanto Time() for igual a uma hora qualquer. Você vai ver que funciona muito bem. Eu uso direto.
[]'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 »

O primeiro parâmetro da ft_ontick é a função que vai ser rodada e o segundo parâmetro é a quantidade de segundos que vai ficar contando, tipo: ft_ontick("caos",50)?

Ou o segundo parâmetro deve ser informado a hora que vai ser disparada a função, tipo: ft_ontick("caos",17:00)?

Outra, o primeiro parâmetro, que é a função a ser disparada, deve estar entre aspas, porque na documentação diz que deve.
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 »

clodoaldomonteiro escreveu:O primeiro parâmetro da ft_ontick é a função que vai ser rodada e o segundo parâmetro é a quantidade de segundos que vai ficar contando, tipo: ft_ontick("caos",50)?
Não. O segundo parâmetro é a quantidade de ticks de relógio que precisarão passar para que a função seja invocada. Pra você ter uma base de comparação, ocorrem 18,204 ticks de relógio a cada segundo.
Outra, o primeiro parâmetro, que é a função a ser disparada, deve estar entre aspas, porque na documentação diz que deve.
A função é um bloco de código. Não uma string. Não tinha reparado, mas parece que você usou uma string simples. Não é isso. Troque por algo como FT_OnTick({||Caos()},10).
[]'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 »

Cara, deu certo mesmo.

Tive que colocar um KEYBOARD CHR(13) antes de chamar a função, pois sempre chamava o descanso de tela antes de contar, mas ficou muito bom.

No manual da nanfor.lib tem um exemplo que mostra o chamamento da função entre aspas, e era por isso que não dava certo.

Tô de devendo mais uma.
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 »

Malígno, tem uma coisinha!

Quando eu teclo qualquer tecla o contador da função não recomeça, ele simplesmente continua, sendo assim o descanço de tela vai ser disparado, mesmo que eu esteja digitando algo, já a keysec() começa sempre a contar depois do último toque no teclado.

Tem como corrigir esse problema?
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 »

Mostra o código.
[]'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 »

Código: Selecionar todos

//Descanso de tela
IF STR(DRVSSTIPO,1) $ '123456'         //PARA A PROTEۂO DA SCRNSAVE.LIB
   SET SCRNSAVE TIME TO DRVSSTEMPO     //120, TEMPO DE ESPERA
   SET SCRNSAVE TYPE TO DRVSSTIPO      //2, TIPO DE DESCAN€O
   SET SCRNSAVE KEY  TO K_ALT_F11      //1=HOME para ativar o descan‡o
   SET SCRNSAVE MODELS TO 1
   SET SCRNSAVE ON
   SET KEY K_END TO
ELSE
   SET SCRNSAVE OFF
   IF DRVSSTIPO=7
      KEYBOARD CHR(13)
      FT_ONTICK({||CAOS()},DRVSSTEMPO*18.204) //letras caindo
   ELSEIF DRVSSTIPO=8
      KEYBOARD CHR(13)
      FT_ONTICK({||stars()},DRVSSTEMPO*18.204) //espaço sideral
   ELSEIF DRVSSTIPO=9
      KEYBOARD CHR(13)
      FT_ONTICK({||BIGCLOCK()},DRVSSTEMPO*18.204) //grande relógio
   ENDIF
ENDI
Se drvsstipo for de 1 a 6, executa os descanços de tela da LIB pro_exo e de 7 a 9, estou tentando usar a função que vc me indicou.

Coloquei esse IF no prg main e na rotina que parametriza as condições do descanço.

Mais tarde eu queria colocar um descanço que mostrasse questôes e resposta sobre contabilidade pública, que é meu sistema principal.
Seria bem últil para os contadores.
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
Responder