Página 1 de 1
Tbrowse mostrar registros filtrados
Enviado: 20 Jan 2017 10:01
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.
Tbrowse mostrar registros filtrados
Enviado: 20 Jan 2017 10:50
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.
Tbrowse mostrar registros filtrados
Enviado: 20 Jan 2017 11:22
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.
Tbrowse mostrar registros filtrados
Enviado: 20 Jan 2017 13:11
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.
Tbrowse mostrar registros filtrados
Enviado: 20 Jan 2017 17:53
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
Tbrowse mostrar registros filtrados
Enviado: 20 Jan 2017 19:07
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( ... )
Tbrowse mostrar registros filtrados
Enviado: 20 Jan 2017 22:34
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.