FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Como filtrar un Xbrowse con Array?
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Como filtrar un Xbrowse con Array?
Posted: Sun Mar 01, 2015 04:23 PM

Hola amigos, pues eso.
Tengo un xbrowse con array (centenares de documentos), el cual necesito filtrar por un documento, segun su numero.
Pueden suministrar un pequeño ejemplo?
Gracias-

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Como filtrar un Xbrowse con Array?
Posted: Sun Mar 01, 2015 04:54 PM

If you use recent versions, xbrowse provides incremental filters on array browse too

Regards



G. N. Rao.

Hyderabad, India
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Como filtrar un Xbrowse con Array?
Posted: Mon Mar 02, 2015 02:08 AM

Thanks, Mr. Nages.
I will take a look to my xbrowse.
Regards

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Como filtrar un Xbrowse con Array?
Posted: Mon Mar 02, 2015 07:15 AM
#include "fivewin.ch"
#include "xbrowse.ch"

function Main()

   local aData[ 20000 ]
   local aSub
   local oDlg, oFont, oBrw, n, r
   local bFilter  := { |x| x[ 1 ] % 3 == 0 }  // can be any other filter cond

   // Initialize Array
   for n := 1 to 20000
      aData[ n ]  := { HB_RandomInt( 10001, 99999 ) }
   next
   //

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 300,600 PIXEL FONT oFont

   @ 10,10 XBROWSE oBrw SIZE -10,-30 PIXEL OF oDlg DATASOURCE aData ;
      COLUMNS 1,1 HEADERS "SlNo", "Data" ;
      PICTURES "99999", "999,999" ;
      CELL LINES NOBORDER FOOTERS

   oBrw:aCols[ 1 ]:bEditValue := { || oBrw:nArrayAt }
   oBrw:aCols[ 1 ]:bFooter    := { || oBrw:nLen }

   oBrw:CreateFromCode()

   @ 275, 10 BUTTON "SetFilter" SIZE 40,12 PIXEL OF oDlg ACTION ;
      ( 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() )
   @ 275, 55 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() )

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil
Regards



G. N. Rao.

Hyderabad, India
Posts: 159
Joined: Wed Mar 28, 2007 01:19 PM
Re: Como filtrar un Xbrowse con Array?
Posted: Mon Mar 02, 2015 02:31 PM

Thanks, Mr. Nages!
And how it would be with arrays in the lines?
TIA & Regards
Euclides

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Como filtrar un Xbrowse con Array?
Posted: Mon Mar 02, 2015 03:12 PM

Excellent example, Mr. Rao. I'll work on it .
Thank you for your magnificent support.
Greetings .

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Como filtrar un Xbrowse con Array?
Posted: Mon Mar 02, 2015 03:50 PM

Thank you so much , Mr. Rao.
Based on your example could solve my problem.
Best regards.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion