KNOWLEDGE BASE

face-white

Ereignisverarbeitung der Bedienstation

04.09.2006 12:33

KB050134 | KONTROLLELEMENTE DYNAMISCH EIN-/AUSBLENDEN UND EIGENSCHAFTEN ÄNDERN

INF

Produkt: Elvis
Version: 2.x
Stand: 2006-09-04

Zusammenfassung

Dieser Artikel präsentiert eine Lösung zu folgender Problemstellung:

Es soll eine Anzeige realisiert werden, die abhängig vom ActualValue eines Datenpunktes die Schrift- und Hintergrundfarbe eines Kontrollelement (z.B. Analog Output) ändert. Ebenso soll durch den ActualValue eines anderen Datenpunktes das Kontrollelement ein- bzw. ausgeblendet werden.

Einzelheiten

Für das Beispiel wird ein Elvis Analog Output Controls verwendet (kann mit einem beliebigen Datenpunkt verknüpft sein). Das geht ganz einfach:

  1. Legen Sie die beiden Steuerdatenpunkte mit den Namen „EIN/AUS“ (für die Farbsteuerung) und „Sichtbar/Unsichtbar“ (für die Sichtbarkeit) vom Typ EIB Schalter an.
  2. Im Beispiel werden diese beiden Datenpunkte zum Ausprobieren mit je einem Statebutton verbunden, aber natürlich können die Werte auch vom Bus kommen.
  3. Geben Sie in Form Load folgenden Code ein („AnalogOutput“ evtl. durch den Namen des zu beeinflussenden Kontrollelementes ersetzen):
    //CODE:vb:' Farben setzen
    If Database.Datapoint("Ein/Aus").ActualValue = True Then
    	Form.Item("AnalogOutput").Forecolor = 255
    	Form.Item("AnalogOutput").Backcolor = 655336
    Else
    	Form.Item("AnalogOutput").Forecolor = 655336
    	Form.Item("AnalogOutput").Backcolor = 255
    End If
    ' Sichtbarkeit setzen
    Form.Item("AnalogOutput").Visible = Database.Datapoint("Sichtbar/Unsichtbar").ActualValue  //CODE
  4. Geben Sie in Form DatapointChanged folgenden Code ein
    //CODE:vb:If Dp.Name = "Ein/Aus" And prop = "ActualValue" Then
    	' Farben setzen
    	If DP.ActualValue = True Then
    		Form.Item("AnalogOutput").Forecolor = 255
    		Form.Item("AnalogOutput").Backcolor = 655336
    	Else
    		Form.Item("AnalogOutput").Forecolor = 655336
    		Form.Item("AnalogOutput").Backcolor = 255
    	End If
    End If
    If Dp.Name = "Sichtbar/Unsichtbar" And prop = "ActualValue" Then
    	' Sichtbarkeit ändern
    	Form.Item("AnalogOutput").Visible = DP.ActualValue
    	' Bedienseite neu zeichnen
    	Form.Document.Redraw
    End If//CODE

    Man muss beide Ereignisse behandeln, damit die richtige Anzeige schon am Anfang (Form_Load) und auch nach jeder relevanten Datenpunktänderung sichergestellt ist.

    Download des Beispielprojekts kb050134.zip.