OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby joseluisysturiz » Mon Nov 09, 2015 4: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby FranciscoA » Mon Nov 09, 2015 9:25 pm

Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2112
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby joseluisysturiz » 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:nArrayAt:hide()

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

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby FranciscoA » Tue Nov 10, 2015 3: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: 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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2112
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby joseluisysturiz » Tue Nov 10, 2015 3: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: 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.


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... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby FranciscoA » Tue Nov 10, 2015 2:58 pm

Por la noche trataré con un ejemplo.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2112
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby joseluisysturiz » Tue Mar 08, 2016 5: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby leandro » 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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1484
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby FranciscoA » Fri Mar 19, 2021 4: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: Select all  Expand view
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
User avatar
FranciscoA
 
Posts: 2112
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OCULTAR/FILTRAR FILA EN XBROWSE CON ARRAY

Postby leandro » Tue Mar 23, 2021 4: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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1484
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: richard-service and 24 guests