Hi!
People, é o seguinte...
Tem um sistema que dou manutenção e tem um arquivo que controla os pedidos e este arquivo fica aberto num TBrowse pelo pessoal de vendas (três usuários) quase o dia todo.
Para que o arquivo seja atualizado, é necessário que o usuário pressione uma tecla de função. Aí os pedidos que já foram atendidos somem da tela do TBrowse porque a tecla de função faz um "Refresh".
O problema é que os usuários invocaram que não querem mais pressionar esta tecla de função... Querem que a cada 5 segundos, este "Refresh" seja feito automaticamente.
Estou pensando um usar o comando INKEY(5)... Quando chegar no tratamento das teclas, se nenhuma foi pressionada, faço um "refresh" e retorno ao WHILE que faz um STABILIZE.
Esta é a melhor solução?
Peço sugestões!
Atualização Automática do TBrowse
Moderador: Moderadores
Essa rotina eu utilizo ha muito tempo, tenho cliente que tem mais de 20 vendedor passando venda ao mesmo tempo.
Código: Selecionar todos
DO WHILE .T.
..
nTecla := NavegaCx(oVenda,"PosVenda")
..
END
***********************
FUNCTION NavegaCx(o,f)
***********************
//
LOCAL nTecla := TeclaCx(o,f)
//
IF (nTecla == K_DOWN)
o:down()
ELSEIF (nTecla == K_UP)
o:up()
ELSEIF (nTecla == K_PGDN)
o:pageDown()
ELSEIF (nTecla == K_PGUP)
o:pageUp()
ELSEIF (nTecla == K_CTRL_PGUP)
o:goTop()
ELSEIF (nTecla == K_CTRL_PGDN)
o:gobottom()
ELSEIF (nTecla == K_RIGHT)
o:right()
ELSEIF (nTecla == K_LEFT)
o:left()
ELSEIF (nTecla == K_CTRL_RIGHT)
o:panright()
ELSEIF (nTecla == K_CTRL_LEFT)
o:panleft()
ELSEIF (nTecla == K_HOME)
o:panhome()
ELSEIF (nTecla == K_END)
o:panend()
END
//
RETURN(nTecla)
*******************************************************************************
FUNCTION TeclaCx(o,f)
*********************
//
LOCAL nTecla := nTempo := 0
//
WHILE nTecla = 0
//
nTecla:=INKEY(.5)
//
o : deHilite()
o : colorRect({o:rowPos,o:leftVisible,o:rowPos,o:rightVisible},{2,1})
o : refreshCurrent()
//
IF nTempo = 4 .AND. VALTYPE(o)="O" .AND. f=NIL
o : refreshAll()
o : deHilite()
o : colorRect({o:rowPos,o:leftVisible,o:rowPos,o:rightVisible},{6,1})
o : forceStable()
nTempo:=0
ELSEIF nTempo = 4 .AND. VALTYPE(f)="C"
&f()
nTempo:=0
END
//
nTempo++
//
ENDDO
//
RETURN(nTecla)
*****************************************************************************
PROCEDURE PosVenda()
********************
//
LOCAL lEOF := Venda->(EOF())
LOCAL nReg := Venda->(RECNO())
//
SELECT Venda
SET ORDE TO 1
GO TOP
//
Venda->(DBSEEK("1"))
nVenda := 0
WHILE Venda->(!EOF())
IF &cVenda
nVenda++
END
Venda->(DBSKIP())
END
//
IF nVenda = 0
Venda->(DBGOBOTTOM())
Venda->(DBSKIP())
ELSE
Venda->(DBGOTO( nReg ))
END
//
oVenda:refreshAll()
oVenda:forceStable()
//
RETURN NIL
