Page 1 of 1
Defining xBrowse COLUMNS for array of hashes
Posted: Wed Dec 05, 2018 3:11 am
by hua
Lets say an array is made up of a few records of hashes with the following structure
h_["receipt"] := "100"
h_["date"] := ctod("05/12/2018")
h_["amount"] := 1000
How to specify the COLUMNS part in xBrowse command if we just want to display h_["receipt"] and h_["amount"]?
TIA
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Wed Dec 05, 2018 4:42 am
by nageswaragunupudi
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Wed Dec 05, 2018 4:52 am
by hua
Thanks for the quick reply Rao
Just to confirm, h_ is stored inside an array.
aFiledbf := {}
aadd(aFiledbf, h_)
Would coding it as below sufficient?
Thanks!
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Wed Dec 05, 2018 4:55 am
by nageswaragunupudi
hua wrote:Thanks for the quick reply Rao
Just to confirm, h_ is stored inside an array.
aFiledbf := {}
aadd(aFiledbf, h_)
Would coding it as below sufficient?
Thanks!
Yes.
But you seem to be using a very old version of FWH.
What I said works with any recent version. I am not sure about very old versions.
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Wed Dec 05, 2018 11:08 am
by hua
Thanks Rao. It works!

Re: Defining xBrowse COLUMNS for array of hashes
Posted: Fri Dec 07, 2018 3:00 am
by hua
Rao, for some reason the autosort doesn't seem to work.
Anything wrong with my definition?
Code: Select all | Expand
redefine xbrowse oBrw id 111 of oDlg ;
COLUMNS "select", "receipt", "date", "name", "amount" ;
HEADERS 'Select', 'Receipt#', 'Date', 'Customer', 'Amount' ;
PICTURES nil, nil, nil, nil, '999,999,999.99' ;
DATASOURCE aFiledbf CELL LINES NOBORDER FASTEDIT AUTOSORT
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Sat Dec 08, 2018 2:58 am
by nageswaragunupudi
Autosort and incremental seek are not provided for array of hashes.
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Sat Dec 08, 2018 2:45 pm
by hua
Thanks for the info Rao. Seems I have to dump the array into a temporary dbf then
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Sat Dec 08, 2018 8:17 pm
by nageswaragunupudi
What are your requirements?
Autosort only?
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Sun Dec 09, 2018 1:08 am
by nageswaragunupudi
Please implement Autosort and Incremental seek with this code
Code: Select all | Expand
REDEFINE XBROWSE oBrw id 111 of oDlg ;
COLUMNS "select", "receipt", "date", "name", "amount" ;
HEADERS 'Select', 'Receipt#', 'Date', 'Customer', 'Amount' ;
PICTURES nil, nil, nil, nil, '999,999,999.99' ;
DATASOURCE aFiledbf CELL LINES NOBORDER FASTEDIT AUTOSORT
WITH OBJECT oBrw
:Cargos := { "select", "receipt", "date", "name", "amount" }
:cSortOrders := { |oCol| HashArraySort( oCol ) }
:bSeek := { |c| HashArraySeek( oBrw, c ) }
// YOUR OTHER CODE HERE
END
Add these functions to your program
Code: Select all | Expand
function HashArraySort( oCol )
local hSave := oCol:oBrw:aRow
local cKey := oCol:Cargo
local cOrder := If( oCol:cOrder == "A", "D", "A" )
if cOrder == "A"
if ValType( hSave[ cKey ] ) == "C"
ASort( oCol:oBrw:aArrayData, , , { |x,y| Upper( x[ cKey ] ) < Upper( y[ cKey ] ) } )
else
ASort( oCol:oBrw:aArrayData, , , { |x,y| x[ cKey ] < y[ cKey ] } )
endi
else
if ValType( hSave[ cKey ] ) == "C"
ASort( oCol:oBrw:aArrayData, , , { |x,y| Upper( x[ cKey ] ) > Upper( y[ cKey ] ) } )
else
ASort( oCol:oBrw:aArrayData, , , { |x,y| x[ cKey ] > y[ cKey ] } )
endi
endif
oCol:oBrw:nArrayAt := AScan( oCol:oBrw:aArrayData, { |h| h == hSave } )
return cOrder
function HashArraySeek( oBrw, cSeek )
local lFound := .f.
local nAt, oCol, cKey
nAt := AScan( oBrw:aCols, { |o| !Empty( o:cOrder ) } )
if nAt == 0
return .f.
endif
oCol := oBrw:aCols[ nAt ]
cKey := oCol:Cargo
cSeek := Upper( cSeek )
nAt := AScan( oBrw:aArrayData, { |h| Upper( cValToChar( h[ cKey ] ) ) = cSeek } )
if nAt == 0
return .f.
endif
oBrw:nArrayAt := nAt
return .t.
Re: Defining xBrowse COLUMNS for array of hashes
Posted: Sun Dec 09, 2018 4:35 am
by hua
This is great! Thanks for your support Rao!