xBrowse con HASH

xBrowse con HASH

Postby pcordonet » Fri Mar 19, 2010 9:05 am

Hola a todos,

Es posible hacer un xBrowse con una array de Hash como elementos ?

Muchas Gracias.
Pere Cordonet
pcordonet
 
Posts: 111
Joined: Sat Jan 30, 2010 8:35 am
Location: Girona

Re: xBrowse con HASH

Postby nageswaragunupudi » Fri Mar 19, 2010 10:26 am

Yes.

We can browse a Hash or Array of Hashes.

Browing a Hash ( xHarbour & FWH 10.2 )
Code: Select all  Expand view
#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:
Image

Alternative code:
Code: Select all  Expand view
#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  Expand view
#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:
Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10468
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: xBrowse con HASH

Postby pcordonet » Fri Mar 19, 2010 10:37 am

Hello nageswaragunupudi

Can you post one sample of array of hashes.

Many, many thanks.
Pere
pcordonet
 
Posts: 111
Joined: Sat Jan 30, 2010 8:35 am
Location: Girona

Re: xBrowse con HASH

Postby nageswaragunupudi » Fri Mar 19, 2010 10:39 am

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
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10468
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: xBrowse con HASH

Postby pcordonet » Mon Mar 22, 2010 10:26 am

Work fine.

Thank you.

Pere
pcordonet
 
Posts: 111
Joined: Sat Jan 30, 2010 8:35 am
Location: Girona

Re: xBrowse con HASH

Postby Marcelo Roggeri » Sun Aug 26, 2018 1:20 pm

Hola Rao buenos dias, estoy queriendo implementar las tablas Hash viendo tu ejemplo, al compilar me da el siguiente error
Code: Select all  Expand view
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  Expand view

#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
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: xBrowse con HASH

Postby nageswaragunupudi » Sun Aug 26, 2018 1:28 pm

The syntax

h:Age

works only with xHarbour.

This syntax works with both Harbour and xHarbour:

h[ "Age" ]
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10468
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: xBrowse con HASH

Postby Marcelo Roggeri » Sun Aug 26, 2018 1:31 pm

Muchas gracias Rao
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: xBrowse con HASH

Postby Marcelo Roggeri » Sun Aug 26, 2018 11:53 pm

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  Expand view

                 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"]

 
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: xBrowse con HASH

Postby Marcelo Roggeri » Sun Aug 26, 2018 11:53 pm

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  Expand view

                 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
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: xBrowse con HASH

Postby Marcelo Roggeri » Mon Aug 27, 2018 1:18 am

Rao, revisando la clase de xBrowse, creo que es asi:

Code: Select all  Expand view

                 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
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: xBrowse con HASH

Postby Marcelo Roggeri » Mon Aug 27, 2018 1:27 am

asi quedo finalmente

Code: Select all  Expand view

                 oCol:bStrData      := {|| if(Len( aHash ) > 0 .and. ValType( aHash[ 1 ] ) == 'H', aHash[oBrwItem:nArrayAt]["IdProducto"] ,"" ) }

 


Saludos
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 47 guests