Wie kann eine komplexe Farbbedingung mit unterschiedlichen Farben definiert werden?

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