Wie können komplexe Farbbedingungen definiert werden?

Voraussetzung: bBrowser 1.4

 

Manchmal ist die Farbbedingung zu komplex, um diese in einer einfachen Bedingung zu definieren. In diesen Fällen kann in der Bedingung eine Methode aufgerufen werden, die einen logischen Wert zurückgibt. Hierzu muss im 2. Argument der Methode bColorCondition:Init() das Objekt übergeben werden, in dem die Methode definiert ist. Solch ein Objekt kann beispielsweise das Fenster von dem bBrowser sein.

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},;

                                       Brush{Color{COLORRED}}}

    self:oDCBrowser:ColorCondition:Add(oColorCondition)

 

    self:oDCBrowser:Refresh()

    self:oDCBrowser:Redraw()

  ENDIF

 

METHOD CheckCondition() CLASS myDataWindow

  LOCAL odbsCUSTOMER  AS OBJECT

  LOCAL iAge          AS INT

 

  odbsCUSTOMER := self:oDCBrowser:Server

 

  iAge := Year(Today())-Year(odbsCUSTOMER:BIRTHDAY)

  IF iAge>=40

    RETURN TRUE

  ELSE

    RETURN FALSE

  ENDIF