Crear Columas xBrowse Dinamicamente

Post Reply
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Crear Columas xBrowse Dinamicamente

Post 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
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Crear Columas xBrowse Dinamicamente

Post 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
 
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Post Reply