Page 1 of 1

Crear Columas xBrowse Dinamicamente

Posted: Thu Feb 13, 2020 7:39 pm
by leandro
Buenas tardes para todos,

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

Code: Select all

    
    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.

Image

Que estoy haciendo mal?

De antemano gracias

Re: Crear Columas xBrowse Dinamicamente

Posted: Fri Feb 14, 2020 2:17 am
by leandro
Solucionado.... lo pase a una función y valga al redundancia funciono jejejejejeje :D

Code: Select all

    FOR t:=1 TO len(aConsulta)
        agregamoscolumnas(aConsulta[t]["codigo"],aConsulta[t]["descripcion"],::detalle)     
    NEXT
 

Code: Select all

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