Tbrowse mostrar registros filtrados

Projeto [x]Harbour - Compilador de código aberto compatível com o 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

Tbrowse mostrar registros filtrados

Mensagem por porter »

olá pessoal,
No TBrowse tem como filtrar registros sem usar o SET FILTER, colocar cores diferentes para cada registro
estou conseguindo normalmente.

xHarbour, DBF.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Tbrowse mostrar registros filtrados

Mensagem por Vlademiro »

Se for para mudar o filtro de acordo com uma condição aqui no fórum tem bastante material sobre isso. Por exemplo:



https://pctoledo.org/forum/viewto ... ec#p110502

Creio que nesse exemplo a condição entra no bloco de código definido por COLORBLOCK:

https://pctoledo.org/forum/viewto ... ect#p96696

Faça uma busca por COLORRECT OU COLORBLOCK. Acho que deve resolver.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Tbrowse mostrar registros filtrados

Mensagem por porter »

Esses exemplos são para colorir uma linha conforme alguma condição,
eu quero que se um determinado campo tenha "*" por exemplo, esse registro
não é para aparecer no Tbrowse, não sei em qual parte do Tbrowse tenho
que pular esses registros.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tbrowse mostrar registros filtrados

Mensagem por JoséQuintas »

Vai apenas colocar asteriscos, ou quer filtrar mesmo?

se é asteriscos que quer mostrar, é no que vai mostrar que precisa colocar isso.

Código: Selecionar todos

// ao invés de 
{ || campo }
//
{ || iif( condicao, "*****", campo ) }
se é pra filtrar, só definir o skip do tbrowse.
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/
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Tbrowse mostrar registros filtrados

Mensagem por porter »

Onde eu defino o skip do Tbrowse, quero mostrar somente registros que o campo ATIVAR esteja vazio.


PROCEDURE BRW_ArqMercadoria
PARAMETERS brw_ls,brw_cs,brw_li,brw_ci,brw_campos
brw:=TBrowseDB(brw_ls+1,brw_cs+1,brw_li-1,brw_ci-1)
brw:colorspec := "W+/N,R+G/G,,,G/R+G"
brw:headsep:=chr(196)+chr(196)
FOR i_=1 TO LEN(brw_campos)
cp_titu:=brw_campos[i_,3]
cp_masc:=brw_campos[i_,2]
cp_:=brw_campos[i_,1]
brw:addcolumn(tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}")))
brw:getcolumn(i_):width := LEN(TRAN(&cp_.,cp_masc))
NEXT
DO WHILE .T.
SETCOLOR("&PR/&CY")

brw:REFRESHALL()
DO WHILE !brw:stabilize() .AND. NEXTKEY()=0
ENDDO
IF LASTKEY() = 27
RETURN(0)
ELSEIF LASTKEY() = 73 .OR. LASTKEY() = 105 && I ou i
CADASTRO("I")
ENDDO
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tbrowse mostrar registros filtrados

Mensagem por JoséQuintas »

Código: Selecionar todos

      brw:SkipBlock     := { | nSkip | dbViewSkip( nSkip, ... ) }
      brw:GoBottomBlock := { || dbViewBottom( ... ) }
      brw:GoTopBlock    := { || dbViewTop( ... ) }

STATIC FUNCTION dbViewSkip( nSkip, ... )
STATIC FUNCTION dbViewBottom( ... )
STATIC FUNCTION dbViewTop( ... )
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/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Tbrowse mostrar registros filtrados

Mensagem por Vlademiro »

A postagem do Quintas mostra como se faz. Caso vc tenha alguma dúvida quanto a função dbViewSkip() ela tem mais ou menos esse aspecto :

Código: Selecionar todos


FUNCTION dbSkipView( nSolicitado )
LOCAL nSaltados := 0

    IF nSolicitado == 0 // Não salta, apenas força a reescrita
       SKIP 0
    ELSEIF nSolicitado > 0 .AND. !eof()
       // SALTA ATÉ QUE O NUMERO PEDIDO SEJA ALCANÇADO
       DO WHILE nSaltados < nSolicitado
          SKIP 1
          IF !( COLOQUE SEU TESTE AQUI ) .OR. EOF()
               SKIP -1
               EXIT
          ENDIF
          nSaltados ++
       ENDDO
   ELSEIF ( nSolicitado < 0 )
       // agora inverte
       DO WHILE nSaltados > nSolicitado
          SKIP -1
          IF !( COLOQUE SEU TESTE AQUI )
               SKIP
               EXIT
          ENDIF
          nSaltados --
       ENDDO
   ENDIF
RETURN nSaltados
É mais ou menos essa a ideia, tem que testar pois eu não testei esse código.
Responder