Clipper On Line • Ver Tópico - refresh tsbrowse

refresh tsbrowse

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

refresh tsbrowse

Mensagempor Amparo » 05 Jun 2014 08:22

ola amigos

tenho 3 pessoas acessando o sistema os 3 estão com a tela de pedidos aberta, nesta tela não existe nenhum pedido lançado, o usuário "A" digita um pedido e salva, automaticamente a grid do TSBROWSE do usuário "B" e "C" é alimentada com o novo registro, se excluir o registro a tela dos 3 usuários volta a ficar em branco tudo sem o usuário mexer uma palha, isso acontece com um sistema feito em HARBOUR 3.2.0 DEV (REV. 18738)

agora em Harbour MiniGUI Extended Edition 2.3.3 - 2014.03.20, isso não acontece, para o registro aparecer tenho que fazer uma nova consulta, se tivesse uns 5 registros no TSBROWSE só aparece se: fizer uma consulta ou descendo com a seta para baixo ate chegar no registro novo.

alguém sabe como resolver este problema , abaixo posto parte do prg
DEFINE TBROWSE CRIATABSBROW AT 100,005 OF CRIATABFORM ALIAS TALIAS WIDTH FWIDTH - 15 ;
HEIGHT FHEIGHT - 160 FONT "Arial" SIZE 08 ;
ON CHANGE { SETPROPERTY( "CRIATABFORM" , "LBREGATU" , "VALUE" , STRZERO( KEYNO(),6 ) + "/" + STRZERO( KEYCOUNT(),6 ) ) } ;
ON DBLCLICK EDIT_INSERT( 2, "CRIATABFORM", "CRIATABSBROW", AFUNC ) ;
CELLED ON HEADCLICK { &CABECALHO. }

f := LEN( COLUNA_FIELDS )

SET( _SET_DELETED, IIF( ALLTRIM( NOME_NOVO_LAYOUTS )==' Layout natural (Ctrl+F6)' .AND. lAdmin,.F.,.T. ) )

FOR W := 1 TO f STEP 1
   IF ALLTRIM(NOME_NOVO_LAYOUTS) == ' Layout natural (Ctrl+F6)'
      ADD COLUMN TO CRIATABSBROW HEADER COLUNA_TITULO[W] SIZE COLUNA_TAMANHO[W] FOOTER "";
      3DLOOK TRUE DATA FieldWBlock( COLUNA_FIELDS[W],Select( TALIAS ) );
      ALIGN DT_LEFT , nMakeLong( DT_CENTER, 3 )
   ELSE
      IF COLUNA_TABELA[W] == 'Calculada'
         NUM := W

         bMacro:=&( "{ || IIF( " + COLUNA_FIELDS[NUM]+ "," +COLUNA_CONDY[NUM]+ "," +COLUNA_CONDZ[NUM]+")}" )

    ADD COLUMN TO CRIATABSBROW HEADER COLUNA_TITULO[W] SIZE COLUNA_TAMANHO[W] FOOTER "";
         PICTURE COLUNA_PICTURE[W] 3DLOOK TRUE DATA bMacro ;
         ALIGN IIF(COLUNA_TIPO[W] == "C",DT_LEFT , IIF( COLUNA_TIPO[W] == "N", DT_RIGHT , DT_CENTER ) ) , ;
         nMakeLong( DT_CENTER, 3 )
      ELSE
    ADD COLUMN TO CRIATABSBROW HEADER COLUNA_TITULO[W] SIZE COLUNA_TAMANHO[W] FOOTER "";
    PICTURE IIF( COLUNA_TIPO[W] == "N", COLUNA_PICTURE[W], "@!" ) ;
         3DLOOK TRUE DATA FIELDWBLOCK( COLUNA_FIELDS[W], SELECT( COLUNA_TABELA[W] ) ) ;
         ALIGN IIF( COLUNA_TIPO[W] == "C", DT_LEFT , IIF( COLUNA_TIPO[W] == "N", DT_RIGHT , DT_CENTER ) ) , ;
         NMAKELONG( DT_CENTER, 3 )
      ENDIF
   ENDIF
END FOR

CRIATABSBROW:SetColor( { 1,3,4,6 } , { COR_PRETA, COR_PRETA, COR_AZULCLARO , COR_LARANJA } )
CRIATABSBROW:nHeightCell = 20                    // altura de celula do browse
CRIATABSBROW:nHeightHead = 30                    // altura do texto das colunas
CRIATABSBROW:GODOWN()
CRIATABSBROW:GOUP()

RefreshBrowse( CRIATABSBROW )

CRIATABSBROW:UPSTABLE( )
CRIATABSBROW:lNoResetPos := .t.
CRIATABSBROW:SETFOCUS( .T.)
CRIATABSBROW:DRAWSELECT( )
CRIATABSBROW:lHasChanged := .T.
CRIATABSBROW:Paint()
CRIATABSBROW:ResetVScroll(.F.)
END TBROWSE


*----------------------------------------------------------------------------------------------------------------
FUNCTION REFRESHBROWSE( browse )
LOCAL nRecno    := RECNO()
LOCAL nSkip     := browse:nRowPos
LOCAL nRowCount := browse:nRowCount
LOCAL nRowPos   := 1
LOCAL nPrevRec

DBSKIP( -1 )
nPrevRec := IF( BOF(), 0, RECNO() )
DBGOTO( nRecno )

DO WHILE nSkip > 1
   DBSKIP( -1 )

   IF BOF()
      EXIT
   ENDIF

   nSkip--
   nRowPos++
ENDDO

DO WHILE nRowPos < nRowCount
   DBSKIP( -1 )

   IF BOF()
      EXIT
   ENDIF

   nRowPos++
ENDDO

browse:lHitTop    := .f.
browse:lHitBottom := .f.
browse:nRowPos    := nRowPos
browse:nLastPos   := nRecno
browse:nPrevRec   := nPrevRec
browse:refresh(.t., .t.)
browse:resetVScroll()
dbGoto(nRecno)

RETURN browse


abraços
Amparo
Avatar de usuário

Amparo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 337
Data de registro: 20 Ago 2010 10:38
Cidade/Estado: caieiras / sao paulo
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

refresh tsbrowse

Mensagempor Amparo » 09 Jun 2014 09:48

ola amigos

existe algum parâmetro que deva ser ajustado para atualizar os dados do TSBROWSE executado nas estações de trabalho quando houver uma alteração em uma tabela DBF em uso?

abraços
Amparo
Avatar de usuário

Amparo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 337
Data de registro: 20 Ago 2010 10:38
Cidade/Estado: caieiras / sao paulo
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

refresh tsbrowse

Mensagempor Amparo » 20 Jun 2014 09:01

ola amigos

ninguém utiliza o TSBROWSE em seu sistema? o que os colegas estão utilizando? e como estão fazendo para que o registro inserido em uma estação apareça nas estações em rede?

abraços
Amparo
Avatar de usuário

Amparo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 337
Data de registro: 20 Ago 2010 10:38
Cidade/Estado: caieiras / sao paulo
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

refresh tsbrowse

Mensagempor Toledo » 20 Jun 2014 13:20

Amparo, tente o seguinte:

1 - Crie uma variável Private no programa principal para controlar o refresh do Browse (por exemplo: lRefresh:=.T.)
2 - Depois de montar o TSBrowse(), coloque um timer para fazer o refresh em determinado tempo:
DEFINE TIMER Timer_1 OF Form_1 INTERVAL 1000 ACTION FazRefresh()

Form_1 é o nome da janela onde está o TSBrowse().
3 - Crie a função que vai controlar o refresh:
Func FazRefresh()
If lRefresh
  CRIATABSBROW:Refresh(.T.)
endif
Return Nil


Não testei, mas acho que vai funcionar.

A variável lRefresh vai servir para você determinar quando pode ser feito o FazRefresh(), então quando o TSBrowse() estiver aberto e você estiver em uma rotina que não vai precisar fazer o refresh (inclusão, alteração, relatório), então mude o valor da variável lRefresh:=.F., ai quando sair da rotina e para voltar a fazer o FazRefresh, mude novamente para lRefresh:=.T.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

refresh tsbrowse

Mensagempor Amparo » 24 Jun 2014 11:10

ola amigos

Toledo, obrigado por sua ajuda.

o time funcionou já o refresh não, vou explicar, tem duas estações de trabalho usando a mesma tela, a estação A e a estação B, quando o usuário da estação A insere um novo registro automaticamente aparece em sua tela, a TARJA COR DE ABÓBORA é o FOCUS do tsbrowse independente da ordem do registro, só que na estação B o registro inserido em A não aparece automaticamente, para que isso aconteça o usuário da estação B precisa descer com a seta ate o ultimo registro ou teclar PageDown ai então vai aparecer, isso se o cadastro estiver em sequencia, agora se na tabela tiver o código LOJA 5 e depois o LOJA 9 ou mais, ai quando vc descer com a seta começa a bagunçar a tela.

isso também vai acontecer quando um usuário de qualquer estação excluir um registro.

local de estoque.png


abraços
Amparo
Avatar de usuário

Amparo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 337
Data de registro: 20 Ago 2010 10:38
Cidade/Estado: caieiras / sao paulo
Curtiu: 0 vez
Mens.Curtidas: 2 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro