Página 1 de 1

keysec(27,20,,.T.) no hBrowse()

Enviado: 17 Fev 2018 09:33
por gilbertosilverio
Ola amigos,

Existe alguma maneira para fechar uma célula aberta na hBROWSE, tipo o keysec(27,20,,.T.) do READ.

Código: Selecionar todos


       @ 13,400 BROWSE oBrw2 DATABASE SIZE 960,150 STYLE WS_TABSTOP AUTOEDIT                  ;
            FIRST {|| XARDEX->( DBSEEK(xESTOQUE->(SUBSTR(DESCRICAO,1,49)), .F.) ) }           ;
            WHILE {|| XARDEX->(SUBSTR(DESCRICAO,1,49)) == xESTOQUE->(SUBSTR(DESCRICAO,1,49))} ;
            ON UPDATE {|| kardex_onPosChange() }

       oBrw2:nHeadHeight := 24
       oBrw2:alias       := 'xARDEX'
       oBrw2:nColumns    := 4
       Obrw2:freeze      := 1

       SELECT (oBrw2:alias)

       oBrw2:AddColumn( HColumn():New('Descrição', FieldBlock( 'DESCRICAO' ) ,'C',50, 0 ,.F.,0,0,,,,,,,,,)) // ESQUERDA
       oBrw2:AddColumn( HColumn():New('N Lote'   , FieldBlock( 'nlote' )     ,'C',20, 0 ,.T.,0,0,,,,,,,,,))
       oBrw2:AddColumn( HColumn():New('Validade' , FieldBlock( 'validade')   ,'C',10, 0 ,.T.,0,0,'99/9999',,,,,,,,)) // CENTRO
       oBrw2:AddColumn( HColumn():New('Qtde'     , FieldBlock( 'qtde' )      ,'N',06, 0 ,.T.,1,2,'9999999',,,,,,,,))

       oBrw2:acolumns[03]:footing    := [Qtde Total: ]
       oBrw2:acolumns[04]:footing   := TRANSF( fVLR01, [@E 999,999] )
       oBrw2:aColumns[03]:nJusFoot   := DT_RIGHT
       oBrw2:aColumns[04]:nJusFoot   := DT_RIGHT
O que preciso, e fechar uma coluna que foi deixada aberta depois de um determinado período, tem como?

Grato

keysec(27,20,,.T.) no hBrowse()

Enviado: 17 Fev 2018 10:58
por asimoes
Eu não sei exatamente o que você quer fazer, mas o evento de tempo em hwgui é SET TIMER

Código: Selecionar todos

SET TIMER oTimer of oJanela VALUE 1000 ACTION {|| Acao() }

keysec(27,20,,.T.) no hBrowse()

Enviado: 17 Fev 2018 11:12
por gilbertosilverio
Asimoes,

O que acontece, e que tem usuário, que principalmente no final do expediente, larga tudo aberto e vai embora, queria fechar a tabela que ficou aberta, dei como exemplo este caso, que e quando o pessoal ta acertando os itens em estoque, e isso as vezes deixa o item do arquivo preso.

Queria matar esta janela ou pelo menos liberar o arquivo, para que o item não fique preso para outro usuário poder usar.

Ja cansei de pedir para fecharem tudo antes de saírem, mais sabe como é... neguinho na hora de ir embora não quer nem saber, larga tudo e se manda... kkkk

Você tem algum exemplo pratico, baseado no set timer para fechar uma janela em execução apos um tempo de inatividade, ou isso não existe.

Grato

keysec(27,20,,.T.) no hBrowse()

Enviado: 17 Fev 2018 11:23
por asimoes

Código: Selecionar todos

SET TIMER oTimer of oJanela VALUE 10000 ACTION {|| Acao() } // 10 segundos para inibir a coluna 1

FUNCTION Acao()

   oBrowse:aColumns[1]:lHide := .T. // .T. esconde, .F. exibe
   
ENDIF   

keysec(27,20,,.T.) no hBrowse()

Enviado: 17 Fev 2018 11:26
por asimoes
Tenho exemplo sim de inatividade, espera um pouco que vou olhar nos meus arquivos.

keysec(27,20,,.T.) no hBrowse()

Enviado: 17 Fev 2018 11:45
por asimoes
Não testei , mas a ideia é seguinte se não houver atividade de teclado/mouse em 30 segundos as tabelas serão fechadas em seguida a janela.

Código: Selecionar todos

SET TIMER oTimer of oJanela VALUE 1000 ACTION {|| Inatividade( 30, oJanela )} //Aguarda 30 segundos para fechar se não houver atividade na jenela

FUNCTION Inatividade( nTime, oJanela )

THREAD STATIC nSeconds

   IF nSeconds = Nil
      nSeconds := Seconds()
   ENDIF

   IF Round( PegaInatividade(), 0 ) == 0
      nSeconds := Seconds()
   ENDIF
      
   IF Seconds() - nSeconds >= nTime
      DbCloseAll()
      oJanela:Close()
      nSeconds:=Seconds()
   ENDIF
    
   hwg_doevents()
   
RETURN Nil

#pragma BEGINDUMP
#include "windows.h"
#include "time.h"
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapifs.h"
#include "shellapi.h"
#include "shlobj.h"
#include "shlwapi.h"
#include "lmcons.h"
#include "commctrl.h"

HB_FUNC( PEGAINATIVIDADE ) 
{
   LASTINPUTINFO lpi;
   lpi.cbSize = sizeof (LASTINPUTINFO);
   GetLastInputInfo (&lpi);
   hb_retnd( ( DOUBLE ) ( GetTickCount() - lpi.dwTime ) / CLOCKS_PER_SEC ); 
}

#pragma ENDDUMP

keysec(27,20,,.T.) no hBrowse()

Enviado: 17 Fev 2018 12:28
por gilbertosilverio
Asimões,

Muito obrigado,

Ja me deu uma luz de como proceder, vou testar e ver se mato mais este problema...


:-Y :-Y :-Y