FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM

OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Mon Nov 09, 2015 04:21 PM

Saludos, tengo un xbrowse con array y necesito DINAMICAMENTE mostrar o no ciertas filas, seria hacer un filtro, con la data desde un QRY no hay problemas porque uso el WHERE, si es con un array como se podria emular esto sin tener que usar una tabla temporal, ya que el array se alimenta en linea por el usuario, es decir, no traigo los datos de ninguna parte, se me ocurrio OCULTAR LAS FILAS que no cumplan la condicion data en el filtro, pero no vi como hacerlo en la clase TXbrowse, solo vi ocultar columna...espero sus sugerencias y comentarios y si es posible..algun ejemplo de como hacer el filtro u ocultar filas, gracias...saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Mon Nov 09, 2015 09:25 PM

Mira si esto te ayuda.

viewtopic.php?f=6t=30274hilit=filtrar+array#p173313
Saludos.

&&

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Tue Nov 10, 2015 12:36 AM
FranciscoA wrote:Mira si esto te ayuda.
http://fivetechsupport.com/forums/viewt ... ay#p173313
Saludos.

Franscisco, como te fue con eso de Mr.Rao-? lograstes lo que querias-? ya eso lo vi y re-lei, solo queria saber si habia una forma mas rapida, facil y comoda, algo como...

oBrw:hide()

intentare haber, gracias , saludos... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Tue Nov 10, 2015 03:16 AM
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 (fw): Select all Collapse
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.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Tue Nov 10, 2015 03:42 AM
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 (fw): Select all Collapse
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.


Francisco, veo un detalle, que pasa si el filtro es bajo mas de una condicion.-? yo hice algo como lo que tienes usando 1 array suplente, por llamarlo de alguna manera que lo lleno con los registros que cumplan las condiciones...recorro el array principal con un FOR y voy llenando aFiltrado como lo llamo y luego ese se lo paso a oBrw:aArrayData, imagino copmo lo haces con EVAL debe ser mas rapido, pero me gustaria saber como hacerlo con mas de una condicion ya que con una sola, veo es facil...aunque insiston...si se pudiesen OCULTAR FILAS que no cumplan la condicion por la que se quiere filtrar, creo seria mas rapido y menos codigo..digo..nose..asi como se oculta una columnas, para los expertos en xbrowse...no creo seria mucho y considero una buenas opcion...seria como hacer un SetWhere() con TDolphin en un oQry.

Gracias por tu informacion y ejemplo, saludos... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Tue Nov 10, 2015 02:58 PM

Por la noche trataré con un ejemplo.
Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Tue Mar 08, 2016 05:15 PM

Saludos, aca retomando este tema...para Mr.Rao y los expertos en xBrowse..se podria hacer algo como el SetWhere de Tdolphin pero q sea en un xBrowse que contenga cualquier DATASOURCE.? la idea seria mostrar/ocultar las filas que no cumplan o no cumplan ciertas condiciones, mas que todo lo considero necesario cuando es un ARRAY, ya que con oQry/DBF/ADO se usaria los filtros existentes...haber si hay animo y q sea algo sencillo, gracias, saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Wed Mar 17, 2021 11:35 AM

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,

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Fri Mar 19, 2021 04:02 PM
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,


Leandro, asi es como lo uso en uno de mis programas.
Code (fw): Select all Collapse
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

Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Posted: Tue Mar 23, 2021 04:51 PM

Amigo muchas gracias por responder :D

Pruebo y comento.

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]

Continue the discussion