Agregar/Quitar columna xbrowse tiempo ejecución
Posted: Sat Apr 22, 2023 9:49 pm
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
- Code: Select all Expand view
#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 nil