Quando um filtro nao satisfaz nenhuma condicao.
Deveria ficar em branco.
Em clipper este codigo funciona mas xHarbour nao funciona.
Vcs poderiam me ajudar a encontrar o erro.
[]s
claudio
Código: Selecionar todos
#include "inkey.ch"
Function Main()
PUBLIC criterio:="c_cpd=='99999'"
PUBLIC chv_rela:=""
PUBLIC chv_1 :=""
PUBLIC chv_2 :=""
Use clt shared new
Index on ltoc(clt->c_cpd == "99999")+c_cpd to ind
Set Index to ind
CriaTbr()
Return
Function CriaTbr()
LOCAL oTbc
LOCAL i
LOCAL nTecla
LOCAL xRetorno
oTbr:=TBrowseDb(01,01,MaxRow(),MaxCol())
oTbr:HeadSep :="ÍÍÍ"
oTbr:ColSep :=" ³ "
oTbr:FootSep :="ÍÍÍ"
For i = 1 to fcount()
oTbr:ADDCOLUMN(TBCOLUMNNEW("", FIELDWBLOCK(FIELDNAME(i),SELE() )))
Next
oTbr:gotopblock := {||INI_ARQ()}
oTbr:gobottomblock := {||FIM_ARQ()}
oTbr:skipblock := {|n|MOV_PTR(n)}
oTbr:gotop()
Do While ( .t. )
Do While ( !oTbr:stabilize () )
EndDo
nTecla := Inkey (0)
Do Case
Case ( nTecla == K_ESC )
Exit
Case ( nTecla == K_DOWN )
oTbr:down ()
Case ( nTecla == K_UP )
oTbr:up ()
Case ( nTecla == K_LEFT )
oTbr:left ()
Case ( nTecla == K_RIGHT )
oTbr:right ()
Case ( nTecla == K_PGUP )
oTbr:pageup ()
Case ( nTecla == K_PGDN )
oTbr:pagedown ()
Case ( nTecla == K_CTRL_PGUP )
oTbr:gotop ()
Case ( nTecla == K_CTRL_PGDN )
oTbr:gobottom ()
EndCase
oTbr:refreshall()
EndDo
Return
Function MOV_PTR(a_pular)
LOCAL ja_pulado := 0
LOCAL chv_
If a_pular = 0
DbSkip( 0 )
Else
chv_=&("{||"+OrdKey(OrdSetfocus())+"=["+If(Empty(criterio),"","T")+chv_1+"]}")
Do While !EOF() .and. !BOF() .and.;
a_pular != ja_pulado .and. Eval(chv_)
If a_pular > 0
DbSkip()
ja_pulado++
Else
DbSkip( -1 )
ja_pulado--
EndIf
EndDo
If !EVAL(chv_) .OR. EOF() .OR. BOF()
If a_pular > 0
FIM_ARQ()
ja_pulado--
Else
INI_ARQ()
ja_pulado++
EndIf
EndIf
EndIf
Return ja_pulado
Function INI_ARQ()
LOCAL ch_:=If( Empty( criterio ) , "" , "T" )+;
If( Empty( chv_rela ) , "" , chv_1 )
If Empty( ch_ ) .and. Empty( chv_rela )
DbGoTop()
Else
DbSeek( ch_ )
EndIf
Return
Function FIM_ARQ()
LOCAL cr_:=If( Empty( criterio ) , "" , "T" )
If Empty( chv_2 ) .AND. Empty( chv_rela )
DbGoBottom()
Else
Set Softseek ON
DbSeek( cr_+chv_2 )
Set Softseek OFF
DbSkip( -1 )
If &(OrdKey(OrdSetfocus()))!=cr_+chv_1
DbGoBottom()
DbSkip()
EndIf
EndIf
Return
Function LtoC( condicao )
If condicao
Return "T"
Else
Return "F"
EndIf



