Identifiquei uma divergência entre o DbEdit e TBrowse quanto a posição do cursor na tela, que causa a impressão de ter problema de indice no arquivo de dados.
Antes sempre utilizava o Dbedit porem com necessidade de pintar algumas linhas conforme o status do produto passei alguma rotinas para uso com TBrowse. Na coluna Descrição permito que o usuário digite as iniciais do item a ser localizado e assim faço a busca e caso exista a tela sofre um refresh e o item é exibido. No caso do TBrowse faço a mesma busca e as vezes não era posicionado no item buscado mesmo sendo localizado.
Fiz vários testes e descobri que se usar a seta para baixo ou chegar até o final da lista de itens, fazer a busca mesmo dando um refreshAll no TBrowse o item não mostra como posicionado.
Pensei que fosse devido no meu TBrowse ter outras rotinas, mas isolei o código e montei um sistema a parte para testes entre o DbEdit e o TBrowse e aconteceu o mesmo.
Creio que o problema esteja na função que vai no brw:skipblock({|_1| MOV_PTR(_1)}) lembro de ter pego aqui no fórum em algum exemplo, como funcionou de boa para o trivial passei a usá-la.
Anexei o sistema que fiz a parte esta em um arquivo RAR e mudei a extensão de RAR para TXT para poder anexar aqui no fórum.
Já esta compilado é só testar o roteiro que coloquei.
Compilado com Hb 3.2
Divergência entre DbEdit e TBrowse atualização da tela
Moderador: Moderadores
Divergência entre DbEdit e TBrowse atualização da tela
- Anexos
-
testeDbeditxTBrowse.txt- após baixar este arquivo, altere a extensão para .RAR e descompacte em uma pasta de sua preferência.
- (598.96 KiB) Baixado 60 vezes
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Divergência entre DbEdit e TBrowse atualização da tela
Se olhar harbour/src/rtl/dbedit.prg, vai ver que o dbedit é feito usando tbrowse.
Só confirmar e ajustar sua rotina pra fazer a mesma coisa.
Em todo caso, talvez prefira assim:
Só confirmar e ajustar sua rotina pra fazer a mesma coisa.
Em todo caso, talvez prefira assim:
Código: Selecionar todos
IF retBrowse=1
brw:refreshCurrent()
ELSEIF retBrowse=2
brw:Configure()
brw:refreshALL()
ELSEIF retBrowse=0
EXIT
ENDIF
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Divergência entre DbEdit e TBrowse atualização da tela
Quintas, já havia tentado com o brw:Configure(); brw:refreshAll(), mas não surtiu efeito algum.
Minha pasta harbour não tem esta subpasta SRC. Já havia procurado pelo fonte do dbedit.prg para comparar com meu TBrowse, só que não tem este fonte. Tem como anexá-lo neste post?JoséQuintas escreveu:Se olhar harbour/src/rtl/dbedit.prg, vai ver que o dbedit é feito usando tbrowse.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Divergência entre DbEdit e TBrowse atualização da tela
Aqui testei no Harbour 3.4.ANDRIL escreveu:Quintas, já havia tentado com o brw:Configure(); brw:refreshAll(), mas não surtiu efeito algum.
brw:Configure() refaz o browse como se fosse do zero.
O resultado é sempre o registro encontrado como a primeira linha do browse.
Só baixar do githubANDRIL escreveu:Minha pasta harbour não tem esta subpasta SRC. Já havia procurado pelo fonte do dbedit.prg para comparar com meu TBrowse, só que não tem este fonte. Tem como anexá-lo neste post?
https://github.com/harbour/core/blob/ma ... dbedit.prg
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Divergência entre DbEdit e TBrowse atualização da tela
Solucionado!
Em retBrowse=2 adicionei o código abaixo em negrito e agora funcionou.
Obrigado Quintas!
Em retBrowse=2 adicionei o código abaixo em negrito e agora funcionou.
Consultei o fonte do DbEdit() do link que postou.
if retBrowse = 2
nPrevRecNo := RecNo()
brw:refreshAll():forceStable()
DO WHILE nPrevRecNo != RecNo()
brw:Up():forceStable()
ENDDO
brw:refreshAll()
endif
Obrigado Quintas!
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
