Voraussetzung: bBrowser 1.4
Aufbauend auf dem vorherigen Tipp 'Wie können komplexe Farbbedingungen definiert werden?' kann die Methode anstatt eines logischen Wertes auch ein Farb-Array zurückgeben. Das Farb-Array muss hierbei aus den folgenden Elementen bestehen:
auColorSpec [BCS_FOREGROUND]
[BCS_BACKGROUND]
[BCS_SELECTEDFOREGROUND]
[BCS_SELECTEDBACKGROUND]
[BCS_INACTIVESELECTEDFOREGROUND]
[BCS_INACTIVESELECTEDBACKGROUND]
Alle Array-Elemente die leer sind, werden mit den Vorder- und Hintergrundfarben aus dem bColorCondition Objekt gefüllt.
Das folgende Codefragment demonstriert die Vorgehensweise:
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