Crear Columas xBrowse Dinamicamente

Crear Columas xBrowse Dinamicamente

Postby leandro » Thu Feb 13, 2020 7: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: Select all  Expand view  RUN
   
    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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Crear Columas xBrowse Dinamicamente

Postby leandro » Fri Feb 14, 2020 2:17 am

Solucionado.... lo pase a una función y valga al redundancia funciono jejejejejeje :D

Code: Select all  Expand view  RUN

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


Code: Select all  Expand view  RUN

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 32 guests