Page 1 of 1
xBrowse con HASH
Posted: Fri Mar 19, 2010 9:05 am
by pcordonet
Hola a todos,
Es posible hacer un xBrowse con una array de Hash como elementos ?
Muchas Gracias.
Pere Cordonet
Re: xBrowse con HASH
Posted: Fri Mar 19, 2010 10:26 am
by nageswaragunupudi
Yes.
We can browse a Hash or Array of Hashes.
Browing a Hash ( xHarbour & FWH 10.2 )
Code: Select all
#include "FiveWin.Ch"
#include "xbrowse.ch"
function Main()
local h := {=>}
h:Age := 45
h:City := 'NewYork'
h:JoinDt := {^ 1997/12/21}
h:First := 'John'
h:Last := 'Abraham'
XBROWSER h
return ( 0 )
Result:
Alternative code:
Code: Select all
#include "FiveWin.Ch"
#include "xbrowse.ch"
function Main()
local oDlg, oBrw
local h := {=>}
h:Age := 45
h:City := 'NewYork'
h:JoinDt := {^ 1997/12/21}
h:First := 'John'
h:Last := 'Abraham'
DEFINE DIALOG oDlg
@ 5,5 XBROWSE oBrw SIZE -5,-5 PIXEL OF oDlg ;
ARRAY h AUTOCOLS HEADERS 'Detail', 'Value' ;
CELL LINES NOBORDER
oBrw:nStretchCol := 1
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
return ( 0 )
Browsing Array of Hashes:
Code: Select all
#include "FiveWin.Ch"
#include "xbrowse.ch"
//------------------------------------------------------------------//
function Main()
local oDlg, oBrw, oFont
local aHash := {}, h
AAdd( aHash, {=>} )
h := ATail( aHash )
h:Age := 45
h:City := 'NewYork'
h:JoinDt := {^ 1997/12/21}
h:First := 'John'
h:Last := 'Abraham'
AAdd( aHash, {=>} )
h := ATail( aHash )
h:Age := 30
h:City := 'Boston'
h:JoinDt := {^ 1990/10/02}
h:First := 'Adam'
h:Last := 'Brian'
DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
DEFINE DIALOG oDlg SIZE 350,200 PIXEL FONT oFont
@ 5,5 XBROWSE oBrw SIZE -5,-5 PIXEL OF oDlg ;
ARRAY aHash AUTOCOLS ;
CELL LINES NOBORDER
oBrw:nStretchCol := STRETCHCOL_LAST
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return ( 0 )
//------------------------------------------------------------------//
Result:
Re: xBrowse con HASH
Posted: Fri Mar 19, 2010 10:37 am
by pcordonet
Hello nageswaragunupudi
Can you post one sample of array of hashes.
Many, many thanks.
Pere
Re: xBrowse con HASH
Posted: Fri Mar 19, 2010 10:39 am
by nageswaragunupudi
pcordonet wrote:Hello nageswaragunupudi
Can you post one sample of array of hashes.
Many, many thanks.
Pere
I have just edited the above posting to include code to browse array of hashes
Re: xBrowse con HASH
Posted: Mon Mar 22, 2010 10:26 am
by pcordonet
Work fine.
Thank you.
Pere
Re: xBrowse con HASH
Posted: Sun Aug 26, 2018 1:20 pm
by Marcelo Roggeri
Hola Rao buenos dias, estoy queriendo implementar las tablas Hash viendo tu ejemplo, al compilar me da el siguiente error
Code: Select all
Time from start: 0 hours 0 mins 0 secs
Error occurred at: 08/26/18, 10:12:23
Error description: Error BASE/1005 No exported variable: AGE
Args:
[ 1] = H {=>}
[ 2] = N 45
Stack Calls
===========
Called from: => _AGE( 0 )
Called from: HASH6.prg => MAIN( 13 )
Code: Select all
#include "FiveWin.Ch"
#include "xbrowse.ch"
//------------------------------------------------------------------//
function Main()
local oDlg, oBrw, oFont
local aHash := {}, h
AAdd( aHash, {=>} )
h := ATail( aHash )
h:Age := 45
h:City := 'NewYork'
h:JoinDt := {^ 1997/12/21}
h:First := 'John'
h:Last := 'Abraham'
AAdd( aHash, {=>} )
h := ATail( aHash )
h:Age := 30
h:City := 'Boston'
h:JoinDt := {^ 1990/10/02}
h:First := 'Adam'
h:Last := 'Brian'
DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
DEFINE DIALOG oDlg SIZE 350,200 PIXEL FONT oFont
@ 5,5 XBROWSE oBrw SIZE -5,-5 PIXEL OF oDlg ;
ARRAY aHash AUTOCOLS ;
CELL LINES NOBORDER
oBrw:nStretchCol := STRETCHCOL_LAST
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return ( 0 )
//------------------------------------------------------------------//
Agradezco si puedes ayudarme, gracias de antemano
Saludos
Marcelo
Re: xBrowse con HASH
Posted: Sun Aug 26, 2018 1:28 pm
by nageswaragunupudi
The syntax
h:Age
works only with xHarbour.
This syntax works with both Harbour and xHarbour:
h[ "Age" ]
Re: xBrowse con HASH
Posted: Sun Aug 26, 2018 1:31 pm
by Marcelo Roggeri
Muchas gracias Rao
Re: xBrowse con HASH
Posted: Sun Aug 26, 2018 11:53 pm
by Marcelo Roggeri
Hola Rao, abusando un poco de tu buena predisposicion, estoy haciendo un facturador y en los itema de la factura agrego los articulos, y quiero implementarlo usando hash.
Como hago en xBrowse para referenciar a una columna del hash, por ejemplo idProducto
Pego parte del codigo
Code: Select all
oBrwItem := TXBrowse():New( oPanelDetL )
*-----------------------------------------------
oCol := oBrwItem:AddCol()
oCol:cHeader := "I.D."
oCol:nWidth := 80
oCol:bStrData := {||If( Len( oBrwItem:aArrayData ) > 0, oBrwItem:aArrayData[ oBrwItem:nArrayAt, 1 ], "" )} // con array
oCol:bStrData := {||If( Len( oBrwItem:aArrayData ) > 0, oBrwItem:aArrayData[ oBrwItem:nArrayAt, 1 ], "" )} // con array
oCol:cDataType := "N"
*-----------------------------------------------
oCol := oBrwItem:AddCol()
oCol:cHeader := "Descripción del Producto"
oCol:nWidth := 250
oCol:cDataType := "C"
oCol:bStrData := { || oQry:DescripcionProducto } // con un query
*-----------------------------------------------
oBrwItem:SetArray( aHash )
AAdd( aHash, {=>} )
h := ATail( aHash )
h["IdProducto"] := hVarArt["nIdProducto"]
h["NombreProducto"] := hVarArt["cNomPro"]
h["CodigoProducto"] := hVarArt["cCodPro"]
h["Cantidad"] := 1
h["PrecioUnitarioNeto"] := hVarArt["nPreUni"]
h["ImporteNetoItem"] := hVarArt["nPreUni"]
Re: xBrowse con HASH
Posted: Sun Aug 26, 2018 11:53 pm
by Marcelo Roggeri
Hola Rao, abusando un poco de tu buena predisposicion, estoy haciendo un facturador y en los itema de la factura agrego los articulos, y quiero implementarlo usando hash.
Como hago en xBrowse para referenciar a una columna del hash, por ejemplo idProducto
Pego parte del codigo
Code: Select all
oBrwItem := TXBrowse():New( oPanelDetL )
*-----------------------------------------------
oCol := oBrwItem:AddCol()
oCol:cHeader := "I.D."
oCol:nWidth := 80
oCol:bStrData := {||If( Len( oBrwItem:aArrayData ) > 0, oBrwItem:aArrayData[ oBrwItem:nArrayAt, 1 ], "" )} // con array
oCol:bStrData := {|| } // con hash?
oCol:cDataType := "N"
*-----------------------------------------------
oCol := oBrwItem:AddCol()
oCol:cHeader := "Descripción del Producto"
oCol:nWidth := 250
oCol:cDataType := "C"
oCol:bStrData := { || oQry:DescripcionProducto } // con un query
oCol:bStrData := {|| } // con hash?
*-----------------------------------------------
oBrwItem:SetArray( aHash )
AAdd( aHash, {=>} )
h := ATail( aHash )
h["IdProducto"] := hVarArt["nIdProducto"]
h["NombreProducto"] := hVarArt["cNomPro"]
h["CodigoProducto"] := hVarArt["cCodPro"]
h["Cantidad"] := 1
h["PrecioUnitarioNeto"] := hVarArt["nPreUni"]
h["ImporteNetoItem"] := hVarArt["nPreUni"]
Saludos y gracias
Re: xBrowse con HASH
Posted: Mon Aug 27, 2018 1:18 am
by Marcelo Roggeri
Rao, revisando la clase de xBrowse, creo que es asi:
Code: Select all
oCol:bStrData := {|| if(Len( aHash ) > 0 .and. ValType( aHash[ 1 ] ) == 'H', aHash[1]["IdProducto"] ,"" ) }
y me lo muestra bien, lo que quiero saber si esta bien asi o puedo reducir el codigo un poco
Gracias de antemano
Saludos
Re: xBrowse con HASH
Posted: Mon Aug 27, 2018 1:27 am
by Marcelo Roggeri
asi quedo finalmente
Code: Select all
oCol:bStrData := {|| if(Len( aHash ) > 0 .and. ValType( aHash[ 1 ] ) == 'H', aHash[oBrwItem:nArrayAt]["IdProducto"] ,"" ) }
Saludos