Eu faço assim, porem jogando para um vetor e depois mostrando ele numa funçaö que fiz que dá um TBROWSE num vetor
Código: Selecionar todos
mtamanho=25
hfil_ope1 = '='
hfil_cod1 = space(mtamanho)
hcolor = SETCOLOR(cor[5])
@ mlin_sup-1,mcol_sup+01 SAY '['+SPACE(30)+']'
@ mlin_sup-1,mcol_sup+02 get hfil_ope1 pict '!' valid critletra(hfil_ope1,'=#',['=' - Igual ou '#' - Diferente])
@ mlin_sup-1,mcol_sup+04 get hfil_cod1 pict '@!'
SETCOLOR(hcolor)
ex_read()
set key K_TAB to udf_tab
if lastkey()=K_ESC
RESTSCREEN(mlin_sup-1,mcol_sup,mlin_sup-1,mcol_inf,buffer)
return(1)
endif
private v_fil:={},v_fil1:={}
for x=1 to mtamanho
xpedaco=substr(hfil_cod1,x,1)
if !empty(xpedaco)
aadd(v_fil1,{x,xpedaco})
endif
next
aviso('Filtrando Registros...')
xreg_ant=recno()
select DOCUMENT
go top
do while !eof()
if pode_filtro(substr(doc_origem,1,mtamanho),hfil_ope1,hfil_cod1,v_fil1)
aadd(v_fil,{cod_doc,nr_rev,titulo,titulo2,titulo3,cod_end,cod_end3,cod_end2})
endif
skip
enddo
private xhead[8],xwidt[8],xmypi[8],eyerow
xhead[1]='Codigo'
xwidt[1]=15
xmypi[1]=memvar->mask_doc
xhead[2]='Rev'
xwidt[2]=03
xmypi[2]='@!'
xhead[3]='Titulo'
xwidt[3]=50
xmypi[3]='@!'
xhead[4]='Titulo - Continuacao'
xwidt[4]=50
xmypi[4]='@X'
xhead[5]='Titulo - Continuacao'
xwidt[5]=50
xmypi[5]='@X'
xhead[6]='Original'
xwidt[6]=len(mask_ende)-3
xmypi[6]=mask_ende
xhead[7]='Copial'
xwidt[7]=len(mask_ende)-3
xmypi[7]=mask_ende
xhead[8]='Digital'
xwidt[8]=len(mask_ende)-3
xmypi[8]=mask_ende
mexc=abrowse(.t.,.f.,.t.,.f.,.f.,"",1,v_fil,mlin_sup,mcol_sup,22,78,xhead,xwidt,xmypi,{|t,l,c| gt_help(t,l,c)},,,.t.,,,{K_F6})
if mexc=K_ESC
go xreg_ant
RESTSCREEN(mlin_sup-1,mcol_sup,mlin_sup-1,mcol_inf,buffer)
return(1)
else
set order to 1
seek v_fil[eyerow,1]
set order to mind_old
RESTSCREEN(mlin_sup-1,mcol_sup,mlin_sup-1,mcol_inf,buffer)
return(1)
endif
function pode_filtro
para mcampo,moperador,mfiltro,v_fil
private mpode:=.t.,x
if !empty(mfiltro)
mpode=iif(moperador='=',.t.,.f.)
for x=1 to len(v_fil)
if substr(mcampo,v_fil[x,1],1)#v_fil[x,2]
mpode=iif(moperador='=',.f.,.t.)
exit
endif
next
endif
return(mpode)