Requirement: bBrowser 1.4
Based on the previous tip 'How to creates complex color conditions' the method can return a color array instead of a logical value. The color array must consist of the following items:
auColorSpec [BCS_FOREGROUND]
[BCS_BACKGROUND]
[BCS_SELECTEDFOREGROUND]
[BCS_SELECTEDBACKGROUND]
[BCS_INACTIVESELECTEDFOREGROUND]
[BCS_INACTIVESELECTEDBACKGROUND]
All array elements that are empty, are filled with the foreground and background colors from the bColorCondition object.
The following code fragment demonstrates the proceeding:
METHOD PostInit() CLASS myDataWindow
LOCAL odbsCUSTOMER AS bDBServer
LOCAL oColorCondition AS bColorCondition
odbsCUSTOMER := bDBServer{"CUSTOMER.DBF"}
IF odbsCUSTOMER:Used
self:oDCBrowser:Use(odbsCUSTOMER)
oColorCondition := bColorCondition{"Server:CheckCondition()",;
self,;
Color{COLORYELLOW}}
self:oDCBrowser:ColorCondition:Add(oColorCondition)
self:oDCBrowser:Refresh()
self:oDCBrowser:Redraw()
ENDIF
METHOD CheckCondition() CLASS myDataWindow
LOCAL auColorSpec AS ARRAY
LOCAL odbsCUSTOMER AS OBJECT
LOCAL iAge AS INT
odbsCUSTOMER := self:oDCBrowser:Server
iAge := Year(Today())-Year(odbsCUSTOMER:BIRTHDAY)
IF iAge>=40
auColorSpec := ArrayCreate(BCS_ITEMS)
auColorSpec[BCS_BACKGROUND] := Brush{Color{COLORRED}}
RETURN auColorSpec
ELSEIF iAge>=30
auColorSpec := ArrayCreate(BCS_ITEMS)
auColorSpec[BCS_BACKGROUND] := Brush{Color{COLORBLUE}}
RETURN auColorSpec
ELSE
RETURN FALSE
ENDIF