XBrowse y Grupo de Columnas
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Hola
He realizado unas pequeñas modificaciones para poder ocultar (hide) o mostrar (show) todas las columnas de un xbrowse pertenecientes a un grupo que hayamos definido, o sea, ocultar o mostrar el grupo.
La condición que he establecido es que no se hayan definido títulos de columnas, solo títulos de grupo
Si se han definido títulos de columnas sigue funcionando igual que antes, hay que ocultarlas (hide) o mostrarlas (show) de forma individual
Quizás esto se podría también definir si se detecta si pulsamos el botón derecho sobre la zona de títulos de columnas o sobre la zona de los títulos de grupo
En mi versión FWH 12.03 no aparece. No se si en las versiones actuales esta implementado.
Este es el código de las funciones / Métodos modificados por si queréis echarle un vistazo y también pongo unas imágenes
Son:
El METHOD SetColumns( nRow, nCol, nFlags ) CLASS TXBrowse
y la funcion
static function GenMenuBlock( aCols, nFor, oXbrw )
![Image](http://img845.imageshack.us/img845/5637/jthe.png)
![Image](http://img809.imageshack.us/img809/1962/1opp.png)
![Image](http://img577.imageshack.us/img577/5930/05n6.png)
Uploaded with ImageShack.us
Saludos
He realizado unas pequeñas modificaciones para poder ocultar (hide) o mostrar (show) todas las columnas de un xbrowse pertenecientes a un grupo que hayamos definido, o sea, ocultar o mostrar el grupo.
La condición que he establecido es que no se hayan definido títulos de columnas, solo títulos de grupo
Si se han definido títulos de columnas sigue funcionando igual que antes, hay que ocultarlas (hide) o mostrarlas (show) de forma individual
Quizás esto se podría también definir si se detecta si pulsamos el botón derecho sobre la zona de títulos de columnas o sobre la zona de los títulos de grupo
En mi versión FWH 12.03 no aparece. No se si en las versiones actuales esta implementado.
Este es el código de las funciones / Métodos modificados por si queréis echarle un vistazo y también pongo unas imágenes
Son:
El METHOD SetColumns( nRow, nCol, nFlags ) CLASS TXBrowse
y la funcion
static function GenMenuBlock( aCols, nFor, oXbrw )
- Code: Select all Expand view
//----------------------------------------------------------------------------//
METHOD SetColumns( nRow, nCol, nFlags ) CLASS TXBrowse
local oMenu, oCol
local nFor, nLen
local cText := ""
local oItem
nLen := Len( ::aCols )
MENU oMenu POPUP
oMenu:l2007 := ::l2007
oMenu:l2010 := !::l2007
for nFor := 1 to nLen
oCol := ::aCols[ nFor ]
if !Empty( oCol:cHeader ) //.and. Empty( oCol:cGrpHdr )
MenuAddItem( oCol:cHeader, , !oCol:lHide, ;
( Len(::aDisplay) != 1 .or. oCol:nPos != 1 ), ;
GenMenuBlock( ::aCols, nFor, Self ) )
else // 17/08/2013
if !Empty( oCol:cGrpHdr )
if Empty( cText )
cText := oCol:cGrpHdr
MenuAddItem( cText, , !oCol:lHide, ;
( Len(::aDisplay) != 1 .or. oCol:nPos != 1 ), ;
GenMenuBlock( oCol, nFor, Self ) )
endif
else
cText := ""
/*
oItem := MenuAddItem( " - ", , !oCol:lHide, ;
( Len(::aDisplay) != 1 .or. oCol:nPos != 1 ), ;
GenMenuBlock( ::aCols, nFor, Self ) )
oItem:bWhen := { || .F. }
*/
endif
endif
next
ENDMENU
ACTIVATE POPUP oMenu AT nRow, nCol OF Self
return nil
//----------------------------------------------------------------------------//
//
// Estructura del array ::aHeaderTop
// 1 2 3 4 5
// { oCol:cGrpHdr, oCol, nFor, nFor, oCol:HeaderHeight( .t. ), ;
// oCol:aBitmap( oCol:nGrpBmpNo ) }
// 6
//----------------------------------------------------------------------------//
static function GenMenuBlock( aCols, nFor, oXbrw ) // Se ha añadido el parametro oXBrw
local oCol
local n := 0
local nGrps := 0
local nGrp1 := 0
local nGrp2 := 0
local uRet := {|| .T. }
local aGrp := {}
if ValType( aCols ) = "A"
oCol := aCols[ nFor ]
uRet := {|| iif( oCol:lHide, oCol:Show(), oCol:Hide() ) }
else // 17/08/2013
if !Empty( oXbrw:aHeaderTop )
nGrps := Len( oXbrw:aHeaderTop )
For n = 1 to nGrps
if nFor >= oXbrw:aHeaderTop[ n ][ 3 ] .and. ;
nFor <= oXbrw:aHeaderTop[ n ][ 4 ]
nGrp1 := oXbrw:aHeaderTop[ n ][ 3 ]
nGrp2 := oXbrw:aHeaderTop[ n ][ 4 ]
n := nGrps + 1
endif
Next n
n := 0
if !Empty( nGrp1 ) .and. !Empty( nGrp2 )
For n = nGrp2 to nGrp1 step -1
oCol := oXbrw:aCols[ n ]
AAdd( aGrp, oCol )
Next n
/*
if nGrp2 < Len( oXbrw:aCols )
n := nGrp2 + 1
else
n := nGrp1 - 1
endif
if Empty( oXbrw:aCols[ n ]:aBitmaps ) //? oXbrw:aCols[ n ]:Value()
AAdd( aGrp, oXbrw:aCols[ n ] )
endif
*/
if !Empty( aGrp )
uRet := {|| AEval( aGrp, {|oC| iif(oC:lHide, oC:Show(), oC:Hide()) } )}
endif
endif
endif
endif
return uRet
//----------------------------------------------------------------------------//
![Image](http://img845.imageshack.us/img845/5637/jthe.png)
![Image](http://img809.imageshack.us/img809/1962/1opp.png)
![Image](http://img577.imageshack.us/img577/5930/05n6.png)
Uploaded with ImageShack.us
Saludos