olá pessoal,
No TBrowse tem como filtrar registros sem usar o SET FILTER, colocar cores diferentes para cada registro
estou conseguindo normalmente.
xHarbour, DBF.
Tbrowse mostrar registros filtrados
Moderador: Moderadores
Tbrowse mostrar registros filtrados
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.
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.
Tbrowse mostrar registros filtrados
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.
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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Tbrowse mostrar registros filtrados
Vai apenas colocar asteriscos, ou quer filtrar mesmo?
se é asteriscos que quer mostrar, é no que vai mostrar que precisa colocar isso.
se é pra filtrar, só definir o skip do tbrowse.
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 ) }
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/
Tbrowse mostrar registros filtrados
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
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
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Tbrowse mostrar registros filtrados
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/
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/
Tbrowse mostrar registros filtrados
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 :
É mais ou menos essa a ideia, tem que testar pois eu não testei esse código.
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

