Porém em xHarbour Windows 1.2.1 só mostra um registro.
Vcs poderiam de me ajudar.
[]s
claudio
Código: Selecionar todos
/******************************************************************
* Procedure: BRW_MATRIZ()
*
* Description: Creates a browse with an array in place of DBF file
*
* You can do a progressive search in any column
* typing the text on any column. To stop it just
* press any arrow key.
*
* Designed for Clipper 5.x and RtLink but can compile with Harbour
*
* Originaly developed by Paulo Cesar Toledo (Clipper On Line)
* Site: www.pctoledo.com.br
* e-mail: toledo@expressnet.com.br
*
* Hint: For better results execute in a folder with many files
*
* Little modifications and tranlated to English by Qatan
*
******************************************************************/
#Include "INKEY.CH"
setmode(25,80)
clear
PRIVATE aMatriz1
SET DATE BRITISH
SET CENTURY ON
SET SCOREBOARD OFF
aMatriz1:=DIRECTORY("*.*") // create array with file information
ASORT(aMatriz1,,,{|x,y| x[1]<y[1]})
J_ANELA(1,12,22,68,"B+/B","N/B","W/B",'['+CURDIR()+']') //
BRW_MATRIZ(aMatriz1)
retu
PROC BRW_MATRIZ
PARAMETERS brw_mat
brw:=TBrowseNew(4,13,21,67)
private n:= 1, ntot:=len(brw_mat)
brw:colorspec := "W+/B,B/W,W+/R,W+/BG,GR+/GR"
brw:headsep:=chr(205)+chr(209)+chr(205)
brw:colsep:=" "+chr(179)+" "
brw:gotopblock({|| n:= 1})
brw:gobottomblock({|| n:=ntot})
brw:skipblock({|_1| (n:= n + _1, iif(n < 1, _1:= _1 - n + (n:= ;
1), iif(n > ntot, _1:= _1 - (n - (n:= ;
ntot)), Nil)), _1)})
brw:addcolumn(tbcolumnnew("File",{|| TRANS(brw_mat[n,1],"@!")}))
brw:getcolumn(1):width := 12
brw:getcolumn(1):cargo := {"@!"}
brw:addcolumn(tbcolumnnew("Size",{|| TRANS(brw_mat[n,2],"@E 99,999,999")}))
brw:getcolumn(2):width := 10
brw:getcolumn(2):cargo := {"@E 99,999,999"}
brw:addcolumn(tbcolumnnew("Date",{|| TRANS(brw_mat[n,3],"@D")}))
brw:getcolumn(3):width := 10
brw:getcolumn(3):cargo := {"@!"}
brw:addcolumn(tbcolumnnew("Time",{|| TRANS(brw_mat[n,4],"@!")}))
brw:getcolumn(4):width := 8
brw:getcolumn(4):cargo := {"@!"}
volta_db=.t.
st_pesq:=""
idx=1
DO WHILE volta_db
SETCOLOR("W+/B")
SET CURSO OFF
e=1
DO WHILE !brw:stabilize() .AND. NEXTKEY()=0
ENDD
READINSERT(.f.)
x_ = COL() ; y_ = ROW()
IF LEN(st_pesq)>0
cp_:=brw_mat[n,brw:colpos]
cp_masc:=brw:getcolumn(brw:colpos):cargo()[1]
IF LEN(st_pesq) <= brw:getcolumn(brw:colpos):width
i_=SETCOLOR("GR+/GR")
t=1
l_m=TRAN(cp_,cp_masc)
FOR j=1 TO LEN(l_m)
IF SUBS(st_pesq,t,1)=SUBS(l_m,j,1)
t++
IF t>LEN(st_pesq)
@ y_,x_ SAY LEFT(l_m,j)
EXIT
ENDI
ENDI
NEXT
SETCOLOR(i_)
ENDI
ENDI
tecl_p=INKEY(0)
carac_ = UPPER(CHR(tecl_p))
IF tecl_p>31
st_p=st_pesq+carac_
cp_:=brw_mat[n,brw:colpos]
tp_cp:=VALTYPE(cp_)
IF idx!=brw:colpos
IF tp_cp="D"
ASORT(brw_mat,,,{|x,y| DTOS(x[brw:colpos])<DTOS(y[brw:colpos])})
ELSEIF tp_cp="N"
ASORT(brw_mat,,,{|x,y| STR(x[brw:colpos])<STR(y[brw:colpos])})
ELSE
ASORT(brw_mat,,,{|x,y| x[brw:colpos]<y[brw:colpos]})
ENDIF
idx:=brw:colpos
ENDIF
brw:RefreshAll()
IF tp_cp="D"
op=ASCAN(brw_mat,{|e| st_p==LEFT(DTOC(e[brw:colpos]),len(st_p))})
ELSEIF tp_cp="N"
op=ASCAN(brw_mat,{|e| st_p==LEFT(LTRIM(STR(e[brw:colpos])),len(st_p))})
ELSE
op=ASCAN(brw_mat,{|e| st_p==LEFT(e[brw:colpos],len(st_p))})
ENDIF
IF op>0
st_pesq=st_p
n:=op
brw:rowpos=1
brw:configure()
ELSE
TONE(400,2)
ENDIF
LOOP
ENDIF
SET CURSO ON
brw:dehilite()
DO CASE
CASE tecl_p = K_ESC
volta_db=.f.
CASE tecl_p = K_UP
brw:up()
CASE tecl_p = K_DOWN
brw:down()
CASE tecl_p = K_RIGHT
brw:right()
CASE tecl_p = K_LEFT
brw:left()
CASE tecl_p = K_HOME
brw:home()
CASE tecl_p = K_END
brw:end()
CASE tecl_p = K_PGUP
brw:pageup()
CASE tecl_p = K_PGDN
brw:pagedown()
CASE tecl_p = K_CTRL_PGDN
brw:gobottom()
CASE tecl_p = K_CTRL_PGUP
brw:gotop()
CASE tecl_p = K_CTRL_END
brw:panend()
CASE tecl_p = K_CTRL_HOME
brw:panhome()
CASE tecl_p = K_CTRL_LEFT
brw:panleft()
CASE tecl_p = K_CTRL_RIGHT
brw:panright()
ENDC
st_pesq=""
ENDD
SET CURSO ON
setcolor('')
cls
RETU
FUNCTION J_ANELA
PARAMETERS L1,C1,L2,C2,C_OR1,C_OR2,C_OR3,T_ITULO
CORR=SETCOLOR()
SET COLOR TO &C_OR1
@ L1,C1 CLEAR TO L2,C2
@ L1,C1 SAY 'Ú'+REPLICATE(CHR(196),C2-C1-1)+'¿'
SET COLOR TO &C_OR3
@ L1,(80-LEN(T_ITULO))/2 SAY T_ITULO
FOR A=L1+1 TO L2-1
SET COLOR TO &C_OR1
@ A,C1 SAY '³'
SET COLOR TO &C_OR2
@ A,C2 SAY '³'
NEXT A
SET COLOR TO &C_OR2
@ L2,C1 SAY 'À'+REPLICATE(CHR(196),C2-C1-1)+'Ù'
SETCOLOR(CORR)
RETURN
