expongo esta otra tecnica...
haciendo doble click cambia el color de cada celda en particular, usa cell tooltip y se puede usar tambien para multi seleccion de celdas y no de filas
#include "fivewin.ch"
#include "xbrowse.ch"
FUNCTION XBrowseArray()
LOCAL oWin2
local aArray := {}
local oBrw
local n:= 1, j:=1
local aRow := {}
setballoon( .t. )
for n = 1 to 28
if j > 7
aadd( aArray, aRow )
aRow := {}
j = 1
ENDIF
aadd( aRow, TCelda():New(n) )
j++
next
aadd( aArray, aRow )
DEFINE WINDOW oWin2 TITLE "XBrowse Test"
@ 0,0 XBROWSE oBrw ;
FIELDS oBrw:aRow[ 1 ]:cDia, ;
oBrw:aRow[ 2 ]:cDia, ;
oBrw:aRow[ 3 ]:cDia, ;
oBrw:aRow[ 4 ]:cDia, ;
oBrw:aRow[ 5 ]:cDia, ;
oBrw:aRow[ 6 ]:cDia, ;
oBrw:aRow[ 7 ]:cDia;
HEADERS 'dia ', 'dia', 'dia', 'dia', 'dia', 'dia', 'dia' ;
COLSIZES 30,30,30,30,30,30,30 ;
ARRAY aArray OF oWin2
for n = 1 to 7
oBrw:aCols[ n ]:bClrStd := GenColor( oBrw, n )
oBrw:aCols[ n ]:bLDClickData := GenDblClick( oBrw, n )
oBrw:aCols[ n ]:bToolTip := GenToolTip( oBrw, n )
NEXT
oBrw:createfromcode()
oWin2:oClient := oBrw
ACTIVATE WINDOW oWin2
return .t.
Function GenColor( oBrw, n )
return {|| if ( oBrw:aRow[ n ]:lDia , {CLR_BLACK,CLR_CYAN},{CLR_BLACK,CLR_WHITE} ) }
Function GenDblClick( oBrw, n )
return {|| oBrw:aRow[ n ]:lDia := !oBrw:aRow[ n ]:lDia, oBrw:aRow[ n ]:cToolTip:= if( oBrw:aRow[ n ]:lDia,;
"Dia Seleccionado","Dia " + strzero( oBrw:aRow[ n ]:cDia,2 )), oBrw:refresh() }
Function GenToolTip( oBrw, n )
return {|| oBrw:aRow[ n ]:cToolTip }
CLASS TCelda
DATA cDia
DATA cToolTip
DATA lDia
METHOD New()
ENDCLASS
METHOD New( n ) CLASS TCelda
::lDia := .f.
::cDia := n
::cToolTip := "Dia " + strzero( n,2 )
return Self