I am giving a very simple sample.
You may adopt this logic to your situation.
Code: Select all | Expand
function BrwColorCells()
local oDlg, oFont, oBrw, oCol
local aPos := { { 1, 2 }, { 1, 4 }, { 2, 1 }, { 3, 3 }, { 4, 2 }, { 4, 4 } }
local aData := ;
{ { 11, 12, 13, 14 } ;
, { 21, 22, 23, 24 } ;
, { 31, 32, 33, 34 } ;
, { 41, 42, 43, 44 } }
XBROWSER aPos TITLE "HIGHLIGHT CELLS" SETUP oBrw:cHeaders := { "ROW", "COL" }
DEFINE FONT oFont NAME "VERDANA" SIZE 0,-20 BOLD
DEFINE DIALOG oDlg SIZE 400,250 PIXEL TRUEPIXEL FONT oFont
@ 20,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
DATASOURCE aData AUTOCOLS LINES NOBORDER
for each oCol in oBrw:aCols
oCol:bClrStd := GenClrBlock( oCol, aPos )
next
oBrw:cHeaders := { "1", "2", "3", "4" }
oBrw:nWidths := "9999"
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return nil
//----------------------------------------------------------------------------//
static function GenClrBlock( oCol, aPos )
local oBrw := oCol:oBrw
local nCol := oCol:nCreationOrder
local xCol
xCol := nCol // your calculation
return { || If( AScan( aPos, { |a| a[ 1 ] == oBrw:nArrayAt .and. a[ 2 ] == xCol } ) > 0, ;
{ CLR_WHITE, CLR_BLUE }, { CLR_BLACK, CLR_WHITE } ) }
//----------------------------------------------------------------------------//
Please run this program as it is without changes.
And then adopt the GenClrBlock(...) to your requirements (particularly deriving xCol from nCol )