How to create a complex color condition with several colors

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