FranciscoA wrote:Mira si esto te ayuda.
http://fivetechsupport.com/forums/viewt ... ay#p173313
Saludos.
local nDocu:=0
local aSub, n, r
local bFilter := { |x| x[6] == nDocu } //6 ES LA COL
//Creacion del dialog y del browse
.....
.....
@ nHt-15, 204 BUTTON "SetFilter" SIZE 40,12 PIXEL OF oDlg ACTION ;
( nDocu := oBrw:aArrayData[oBrw:nArrayAt, 6] ,; //6 es la col del No. de Dcmto
If( aSub == nil, ( aSub := {}, AScan( aData, { |x| If ( Eval( bFilter, x ), AAdd( aSub, x ), nil ) } ) ), nil ), ;
n := oBrw:aRow, r := oBrw:nRowSel, oBrw:aArrayData := aSub, oBrw:Refresh( .t. ), ;
oBrw:nArrayAt := Max( 1, AScan( aSub, { |x| x == n } ) ), ;
oBrw:nRowSel := r, ;
oBrw:SetFocus() )
@ nHt-15, 250 BUTTON "ClearFilter" SIZE 40,12 PIXEL OF oDlg ACTION ;
( n := oBrw:aRow, r := oBrw:nRowSel, oBrw:aArrayData := aData, oBrw:Refresh( .t. ), ;
oBrw:nArrayat := Max( 1, AScan( aData, { |x| x == n } ) ), ;
oBrw:nRowSel := r, ;
oBrw:SetFocus() , aSub:=NIL)
ACTIVATE DIALOG oDlg CENTERED
FranciscoA wrote:José Luis:
Lo que hago es filtrar el browse por el numero de documento que actualmente está sombreado, en este caso, en la columna 6.
(el documento puede tener muchos items)
Te pongo aquí solo lo concerniente al filter, ya que lo demás es código conocido.
- Code: Select all Expand view
local nDocu:=0
local aSub, n, r
local bFilter := { |x| x[6] == nDocu } //6 ES LA COL
//Creacion del dialog y del browse
.....
.....
@ nHt-15, 204 BUTTON "SetFilter" SIZE 40,12 PIXEL OF oDlg ACTION ;
( nDocu := oBrw:aArrayData[oBrw:nArrayAt, 6] ,; //6 es la col del No. de Dcmto
If( aSub == nil, ( aSub := {}, AScan( aData, { |x| If ( Eval( bFilter, x ), AAdd( aSub, x ), nil ) } ) ), nil ), ;
n := oBrw:aRow, r := oBrw:nRowSel, oBrw:aArrayData := aSub, oBrw:Refresh( .t. ), ;
oBrw:nArrayAt := Max( 1, AScan( aSub, { |x| x == n } ) ), ;
oBrw:nRowSel := r, ;
oBrw:SetFocus() )
@ nHt-15, 250 BUTTON "ClearFilter" SIZE 40,12 PIXEL OF oDlg ACTION ;
( n := oBrw:aRow, r := oBrw:nRowSel, oBrw:aArrayData := aData, oBrw:Refresh( .t. ), ;
oBrw:nArrayat := Max( 1, AScan( aData, { |x| x == n } ) ), ;
oBrw:nRowSel := r, ;
oBrw:SetFocus() , aSub:=NIL)
ACTIVATE DIALOG oDlg CENTERED
Espero te sirva de algo.
Saludos.
leandro wrote:Francisco buenos días como estas?
No si en algún otro post publicaste el ejemplo sobre el filtro de registros sobre un array.
De antemano gracias,
Function ArrayFilter()
local oDlg,oBrw, cAlias, oFont, oCol
local nWd := GetSysMetrics(0) * .90 // .75
local nHt := GetSysMetrics(1) / 1.20 // 2
local aGradBarSel:= { { 1, RGB(252,232,171) , RGB(248,195, 34) } }
local aGradRowSel:= {{1, RGB(108,125, 184), RGB(241,222,088)}}
local cOldSele:=Select(), aDat:={},aData:={}, aTitCols
local nOrdAnt, nDocu:=0
local aSub, n, r
local bFilter := { |x| x[3] == nDocu } //3 es la col
DBUSEAREA(.T.,,"MCONMOV","MCONMOV",.T.)
dbselectarea("MCONMOV")
cAlias:=Alias()
index on Substr(Str(field->Numdoc),7,4) + Substr(Str(field->Numdoc),5,2) + Substr(Str(field->Numdoc),1,4) ;
to "C:\"+cAlias ADDITIVE TEMPORARY FOR FIELD->TD="CD"
aTitCols:={}
AEval( DbStruct(), { |a| aadd(aTitCols, a[1]) } )
(cAlias)->( FW_DbfToArray( , , , , , , aData ) )
(cAlias)->(OrdDestroy("C:\"+cAlias))
(cAlias)->(DBCLOSEAREA())
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
DEFINE DIALOG oDlg SIZE nWd,nHt PIXEL TRUEPIXEL TITLE "ARRAY DE CDIARIOS " +cAlias FONT oFont
nWd /= 2
nHt /= 2
XbrNumFormat( 'A', .t. )
@1,1 XBROWSE oBrw OF oDlg ;
AUTOCOLS ;
HEADERS aTitCols ;
ARRAY aDATA ;
CELL LINES NOBORDER FOOTERS
if UPPER(cAlias)=="MCONMOV"
WITH OBJECT oBrw:numdoc
:cEditPicture := "####-##-####"
END
endif
ADD COLUMN oCol TO oBrw AT 1 HEADER "Item"
oBrw:aCols[ 1 ]:bEditValue := { || oBrw:nArrayAt }
oBrw:aCols[ 1 ]:bFooter := { || oBrw:nLen }
oBrw:CreateFromCode()
//oBrw:bRClicked := {|| VerDocs(cAlias,oBrw) }
@ oDlg:nHeight-25, 10 BUTTON 'Imprimir' SIZE 80,20 PIXEL OF oDlg ACTION oBrw:Report()
@ oDlg:nHeight-25,100 BUTTON 'Excel' SIZE 80,20 PIXEL OF oDlg ACTION oBrw:ToExcel()
@ oDlg:nHeight-25,190 BUTTON 'Salir' SIZE 80,20 PIXEL OF oDlg ACTION ( oDlg:End() )
//@ oDlg:nHeight-25, 164 BUTTON 'Ver Doc' SIZE 35,11 PIXEL OF oDlg ACTION ( VerDocs(cAlias,oBrw) )
@ oDlg:nHeight-25,280 BUTTON "SetFilter" SIZE 80,20 PIXEL OF oDlg ACTION ;
( nDocu := oBrw:aArrayData[oBrw:nArrayAt, 3] ,; //3 es la col
If( aSub == nil, ( aSub := {}, AScan( aData, { |x| If ( Eval( bFilter, x ), AAdd( aSub, x ), nil ) } ) ), nil ), ;
n := oBrw:aRow, r := oBrw:nRowSel, oBrw:aArrayData := aSub, oBrw:Refresh( .t. ), ;
oBrw:nArrayAt := Max( 1, AScan( aSub, { |x| x == n } ) ), ;
oBrw:nRowSel := r, ;
oBrw:SetFocus() )
@ oDlg:nHeight-25,370 BUTTON "ClearFilter" SIZE 80,20 PIXEL OF oDlg ACTION ;
( n := oBrw:aRow, r := oBrw:nRowSel, oBrw:aArrayData := aData, oBrw:Refresh( .t. ), ;
oBrw:nArrayat := Max( 1, AScan( aData, { |x| x == n } ) ), ;
oBrw:nRowSel := r, ;
oBrw:SetFocus() , aSub:=NIL)
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( FitSizes( oBrw, ) , oBrw:SetSize(oDlg:nWidth,oDlg:nHeight-80) )
RELEASE FONT oFont
dbselectarea(cOldSele)
Return nil
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: acrisostomo2017, Google [Bot] and 34 guests