Hola buenas tardes para todos
En este momento requerimos agregar o quitar columnas del xbrowse en tiempo de ejecuci贸n. Ya que estamos intentando generar un reporte din谩mico.
O es necesario volver a crear todo el objeto? si este fuera el caso como se hace? De antemano gracias.

Despu茅s de cambiar la info

El c贸digo que muestra lo que intentamos hacer
En este momento requerimos agregar o quitar columnas del xbrowse en tiempo de ejecuci贸n. Ya que estamos intentando generar un reporte din谩mico.
O es necesario volver a crear todo el objeto? si este fuera el caso como se hace? De antemano gracias.

Despu茅s de cambiar la info

El c贸digo que muestra lo que intentamos hacer
#include "fivewin.ch"
function Main()
聽 聽local oWnd, oBar, oBrw, oFont
聽 聽local cNcol, j
聽 聽local atales
聽 聽local aCols1 := {"nombre","apellido","id","dinamica1","dinamica2","dinamica3","dinamica4"}
聽 聽local aColTt := {"El nombre","El apellido","el id","la columna 1","la columna 2","la columna 3","la columna 4"}
聽 聽local aColAn := {100,100,40,80,80,80,80}
聽 聽local cbCambioInfo := <||
聽 聽 聽 聽 aTales := ReadHashArray2() //LLenamos el array con la nueva informaci贸n
聽 聽聽聽 聽 oBrw:aArrayData := aTales聽 聽
聽 聽 聽 聽 oBrw:refresh()
聽 聽>
聽 聽aTales := ReadHashArray() //LLenamos el array con los datos iniciales
聽 聽Define Font oFont Name "Calibri" Size 0,-14 Bold
聽 聽DEFINE WINDOW oWnd TITLE FWVERSION + " : Columnas Dinamicas" 聽
聽 聽oWnd:SetFont( oFont )
聽 聽DEFINE BUTTONBAR oBar OF oWnd SIZE 50,20 2007
聽 聽DEFINE BUTTON OF oBar PROMPT "Cambio" 聽 CENTER ACTION EVAL(cbCambioInfo)
聽 聽SET MESSAGE OF oWnd TO "" 2007
聽 聽
聽 聽 @ oBar:nHeight,0 XBROWSE oBrw ;
聽 聽 SIZE 0 ,0 OF oWnd PIXEL ;
聽 聽 LINES STYLE FLAT NOBORDER ;
聽 聽 DATASOURCE aTales AUTOCOLS
聽 聽
聽 聽 ReArrangeCols( oBrw, aCols1 )
聽 聽 WITH OBJECT oBrw
聽 聽 聽 聽 :lRecordSelector 聽 聽聽 聽 := .T.
聽 聽 聽 聽 :lHScroll 聽 聽 聽 聽聽 聽:= .T.
聽 聽 聽 聽 :lVScroll 聽 聽 聽 聽聽 聽:= .T.
聽 聽 聽 聽 :l2007 聽 聽 聽 聽 聽 聽 聽:= .T.
聽 聽 聽 聽 :lFitGridHeight 聽聽 聽聽 聽 := .T.
聽 聽 聽 聽 :nHeaderHeight 聽 聽 聽聽 聽 := 30
聽 聽 聽 聽 :nRowHeight 聽 聽 聽聽 聽:= 21
聽 聽 聽 聽 :nMarqueeStyle 聽 聽 聽聽 聽 := MARQSTYLE_HIGHLROW
聽 聽 聽 聽 :lColDividerComplete 聽 聽:= .t.
聽 聽 聽 聽 :lFullGrid 聽 聽 聽 聽 聽:= .T.
聽 聽 聽 聽 :nStretchCol 聽 聽 聽 聽聽 聽 := STRETCHCOL_LAST
聽 聽 END
聽 聽 WITH OBJECT oBrw
聽 聽 聽 聽 //Colocamos los titulos a las columnas
聽 聽 聽 聽 FOR j:=1 TO len(aCols1)
聽 聽 聽 聽 聽 聽 :aCols[j]:cHeader 聽:= aColTt[j]
聽 聽 聽 聽 聽 聽 :aCols[j]:nWidth = aColAn[j]聽 聽
聽 聽 聽 聽 NEXT
聽 聽 END
聽 聽 oBrw:CreateFromCode()
聽 聽 oWnd:oClient := oBrw
聽 聽ACTIVATE WINDOW oWnd CENTERED
return nil
聽
聽
static function ReadHashArray()
聽 聽local hInfo, aTales := {}
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "LEANDRO"
聽 聽hInfo["apellido"] := "AREVALO"
聽 聽hInfo["id"] := 1
聽 聽hInfo["dinamica1"] := 15000
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica3"] := 35000
聽 聽hInfo["dinamica4"] := 45000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "JUDITH"
聽 聽hInfo["apellido"] := "RIVAS"
聽 聽hInfo["id"] := 2
聽 聽hInfo["dinamica1"] := 15000
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica3"] := 35000
聽 聽hInfo["dinamica4"] := 45000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "ROBERTO"
聽 聽hInfo["apellido"] := "TOTO"
聽 聽hInfo["id"] := 3
聽 聽hInfo["dinamica1"] := 15000
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica3"] := 35000
聽 聽hInfo["dinamica4"] := 45000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "FEDERICO"
聽 聽hInfo["apellido"] := "EXPLICO"
聽 聽hInfo["id"] := 4
聽 聽hInfo["dinamica1"] := 15000
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica3"] := 35000
聽 聽hInfo["dinamica4"] := 45000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "ENTIENDES"
聽 聽hInfo["apellido"] := "MEDEZ"
聽 聽hInfo["id"] := 5
聽 聽hInfo["dinamica1"] := 15000
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica3"] := 35000
聽 聽hInfo["dinamica4"] := 45000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
#ifdef __XHARBOUR__
聽 聽AEval( aTales, { |h| 聽 聽HSetCaseMatch( h, .f. ) } )
#else
聽 聽AEval( aTales, { |h| HB_HSetCaseMatch( h, .f. ) } )
#endif
return aTales
static function ReadHashArray2()
聽 聽local hInfo, aTales := {}
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "LEANDRO"
聽 聽hInfo["apellido"] := "AREVALO"
聽 聽hInfo["id"] := 1
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica5"] := 45000
聽 聽hInfo["dinamica6"] := 55000
聽 聽hInfo["dinamica7"] := 75000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "JUDITH"
聽 聽hInfo["apellido"] := "RIVAS"
聽 聽hInfo["id"] := 2
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica5"] := 45000
聽 聽hInfo["dinamica6"] := 55000
聽 聽hInfo["dinamica7"] := 75000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "ROBERTO"
聽 聽hInfo["apellido"] := "TOTO"
聽 聽hInfo["id"] := 3
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica5"] := 45000
聽 聽hInfo["dinamica6"] := 55000
聽 聽hInfo["dinamica7"] := 75000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "FEDERICO"
聽 聽hInfo["apellido"] := "EXPLICO"
聽 聽hInfo["id"] := 4
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica5"] := 45000
聽 聽hInfo["dinamica6"] := 55000
聽 聽hInfo["dinamica7"] := 75000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
聽 聽hInfo["nombre"] := "ENTIENDES"
聽 聽hInfo["apellido"] := "MEDEZ"
聽 聽hInfo["id"] := 5
聽 聽hInfo["dinamica2"] := 25000
聽 聽hInfo["dinamica5"] := 45000
聽 聽hInfo["dinamica6"] := 55000
聽 聽hInfo["dinamica7"] := 75000
聽 聽AADD(atales,hInfo)
聽 聽hInfo := {=>}
#ifdef __XHARBOUR__
聽 聽AEval( aTales, { |h| 聽 聽HSetCaseMatch( h, .f. ) } )
#else
聽 聽AEval( aTales, { |h| HB_HSetCaseMatch( h, .f. ) } )
#endif
return aTales
聽
聽
function ReArrangeCols( oBrw, aCols )
聽 聽AEval( oBrw:aCols, { |o| o:lHide := .f. } )
聽 聽oBrw:ReArrangeCols( aCols )
聽 聽AEval( oBrw:aCols, { |o| o:lHide := .t. }, Len( aCols ) + 1 )
聽 聽oBrw:Refresh()
return nilSaludos
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) ]
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) ]