sair de um Dbedit se nao estiver usando

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

sair de um Dbedit se nao estiver usando

Mensagem por porter »

boa noite pessoal, gostaria de saber o seguinte, tem como sair de um Dbedit apos um determinado tempo sem usar, por exemplo um cadastro de cliente, se ninguem usa-lo ou seja incluir, alterar, etc algum registro, seria pressionada automaticamente uma tecla esc por exemplo, depois de um tempo pre-estabelecido e sairia do Dbedit. Isso porque o usuario, nao esta usando o sistema, e estao abertos varios arquivos, se sair de forma automatica, todos os arquivos serao fechados.

Nao sei se expliquei direito.

desde ja obrigado.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: sair de um Dbedit se nao estiver usando

Mensagem por alaminojunior »

Precisaría ver como o colega está codificando este dbedit() para sugerir algo.
O que eu aconselho é trocar o dbedit por tbrowse que é mais flexível para isso.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: sair de um Dbedit se nao estiver usando

Mensagem por ANDRIL »

Amigo, abaixo segue o código que talvez venha a lhe servir.

Código: Selecionar todos

*--variavel com conteudo de tempo maximo para a ociosidade em segundos
maxocioso=5 

*--abra se dbf aqui
use c:\np\produto
dbedit(00,00,24,79,"","funcao")
Aqui a funcao de controle para o seu DbEdit()

Código: Selecionar todos


function funcao
parameters modo, campo
l_=row()
c_=col()
t=field(campo)
t1=&t

@l_,c_ say t1 colo "n/w"

if lastkey()=27
   return 0

elseif lastkey()=13
   return 0

else
    segundos=0
    keyb chr(0) 
    do while lastkey()=0
          inkey(1.00)
          if lastkey()#0
             keyb chr(lastkey())
             exit
          endif
          segundos++
          if segundos=maxocioso
                cls
                ? "A funcao DBEDIT foi finalizada por ociosidade."
                close all
                quit
          endif
          @24,00 say "Tempo ocioso: "+alltrim(str(segundos))+" segundos."
    enddo
    return 2
endif
O ideal seria voce usar uma função em Background usando a BGEVENT.LIB que permite colocar funções rodando em segundo plano, assim, voce criaria uma função que se o sistema ( independente de onde estivesse, DbEdit, Achoice, Get, Prompt etc ) nao tivesse uso de teclado por um determinado tempo, o sistema seria bloqueado e seus arquivos fechados ou simplesmente fecharia o sistema.

Boa Sorte.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder