FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Crear Columas xBrowse Dinamicamente
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM
Crear Columas xBrowse Dinamicamente
Posted: Thu Feb 13, 2020 07:39 PM
Buenas tardes para todos,

Requiero crear de manera dinámica algunas columas de un xbrowse. Lo estoy haciendo de la siguiente manera:

Code (fw): Select all Collapse
    
    oBrwReci := TXBrowse():New( ::oDlgRcj )
    oBrwReci:nMarqueeStyle         := MARQSTYLE_HIGHLROW
    oBrwReci:nRowDividerStyle      := LINESTYLE_LIGHTGRAY
    oBrwReci:nColDividerStyle      := LINESTYLE_LIGHTGRAY
    oBrwReci:nHeaderLines          := 1
    oBrwReci:lColDividerComplete   := .t.
    oBrwReci:lRecordSelector       := .t.
    oBrwReci:nStretchCol           := STRETCHCOL_LAST
    oBrwReci:l2007                 := .f.
    oBrwReci:oFont                 := oFont1  
    oBrwReci:lFooter               := .t.
    oBrwReci:nFooterLines          := 1
    oBrwReci:nFooterHeight         := 24  
    oBrwReci:bRClicked             := {|nRow, nCol | ::mRegReci( nRow,nCol,oBrwReci,cbTipItem ) }
    oBrwReci:bKeyDown              := {|nKey,oGet,nCol|TecItemNota(nKey,oGet,nCol,cbTipItem)}
    oBrwReci:bClrStd               := {|| { CLR_BLACK,clrEstFondo(::detalle[oBrwReci:nArrayAt]["estado"]) } }   
    oBrwReci:bClrSelFocus          := {|| { CLR_WHITE,clrEstSelec(::detalle[oBrwReci:nArrayAt]["estado"]) } }

    oCol          = oBrwReci:AddCol()
    oCol:bStrData := {|| if(Len( ::detalle ) > 0 , Transform(::detalle[oBrwReci:nArrayAt]["id"],oLamcla:PIC9) ,"" ) }
    oCol:AddResource( "#8208" ) 
    oCol:cHeader  = "Item"
    oCol:nWidth   = 30
    oCol:nHeadStrAlign = AL_LEFT
    oCol:nDataStrAlign = AL_LEFT    
    oCol:oHeaderFont = oFont
    oCol:nFootBmpNo    := 1
    oCol:bLClickFooter := {|r,c,f,o| EVAL(cbTipItem) }

    oCol          = oBrwReci:AddCol()
    oCol:bStrData := {|| if(Len( ::detalle ) > 0 , cValToChar(::detalle[oBrwReci:nArrayAt]["documento"]) ,"" ) }
    oCol:cHeader  = "Documento"
    oCol:nWidth   = 60
    oCol:nHeadStrAlign = AL_LEFT
    oCol:nDataStrAlign = AL_LEFT    
    oCol:oHeaderFont = oFont

    oCol          = oBrwReci:AddCol()
    oCol:bStrData := {|| if(Len( ::detalle ) > 0 , cValToChar(::detalle[oBrwReci:nArrayAt]["factura"]) ,"" ) }
    oCol:cHeader  = "Factura"
    oCol:nWidth   = 50
    oCol:nHeadStrAlign = AL_LEFT
    oCol:nDataStrAlign = AL_LEFT    
    oCol:oHeaderFont = oFont
    
    oCol          = oBrwReci:AddCol()
    oCol:bStrData := {|| if(Len( ::detalle ) > 0 , dtoc(::detalle[oBrwReci:nArrayAt]["fecha"]) ,"" ) }
    oCol:cHeader  = "Fecha"
    oCol:nWidth   = 60
    oCol:nHeadStrAlign = AL_LEFT
    oCol:nDataStrAlign = AL_LEFT    
    oCol:oHeaderFont = oFont
    oCol:cFooter      = "TOTALES"   
    oCol:oFooterFont = oFont3

    //Datos de las Columnas
    aData := {"riva","rica","rfte"}
    aTitu := {"Rete 1","Rete 2","Rete 3"}
    FOR p:= 1 TO len(aData)

        oCol          = oBrwReci:AddCol()
        oCol:bStrData := {|| if(Len( ::detalle ) > 0 , Transform(::detalle[oBrwReci:nArrayAt][(aData[p])],oLamcla:PIC7)  ,"" ) }
        oCol:cHeader  = aTitu[p]
        oCol:nWidth   = 91
        oCol:nHeadStrAlign = AL_RIGHT
        oCol:nDataStrAlign = AL_RIGHT
        oCol:oHeaderFont = oFont            
    
    NEXT

    oCol          = oBrwReci:AddCol()
    oCol:bStrData := {|| if(Len( ::detalle ) > 0 , Transform(::detalle[oBrwReci:nArrayAt]["abon"],oLamcla:PIC7)  ,"" ) }
    oCol:cHeader  = "Vr Pago/Abono"
    oCol:nWidth   = 91
    oCol:nHeadStrAlign = AL_RIGHT
    oCol:nDataStrAlign = AL_RIGHT   
    oCol:oHeaderFont = oFont
    oCol:bFooter       = {|| Transform(::hEncabezado["total"],oLamcla:PIC7) }
    oCol:nFootStrAlign = 1
    oCol:oFooterFont = oFont3
    
    oBrwReci:SetArray( ::detalle )
    oBrwReci:CreateFromResource( 102 )


Pero no me funciona... la información que esta asignada en las columnas creadas de manera dinámica no se muestra, una imagen.



Que estoy haciendo mal?

De antemano gracias
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM
Re: Crear Columas xBrowse Dinamicamente
Posted: Fri Feb 14, 2020 02:17 AM
Solucionado.... lo pase a una función y valga al redundancia funciono jejejejejeje :-)

Code (fw): Select all Collapse
    FOR t:=1 TO len(aConsulta)
        agregamoscolumnas(aConsulta[t]["codigo"],aConsulta[t]["descripcion"],::detalle)     
    NEXT


Code (fw): Select all Collapse
function agregamoscolumnas(cmp,tit,det)
oCol          = oBrwReci:AddCol()
oCol:bStrData := {|| if(Len( det ) > 0 , Transform(det[oBrwReci:nArrayAt][cmp],oLamcla:PIC7)  ,"" ) }
oCol:cHeader  = tit
oCol:nWidth   = 91
oCol:nHeadStrAlign = AL_RIGHT
oCol:nDataStrAlign = AL_RIGHT
oCol:oHeaderFont = oFont
oCol:=nil
Return nil
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]

Continue the discussion