Einen Balken bauen, der sich an seinen Grenzen umfärbt
Fortgeschritten · 10 Min. · Anzeige
Value = 12 LoLimit = true Value = 58 Value = 91 HiLimit = true
Das Problem
Der übliche Balken besteht aus drei übereinandergelegten Rechtecken — grün, gelb, rot — mit Sichtbarkeitsdynamiken, die entscheiden, welches erscheint. Drei Objekte, die bei jeder Layoutänderung neu skaliert werden müssen, und drei Gelegenheiten, dass sich die Vergleiche überschneiden oder eine Lücke lassen.
Außerdem werden zwei unabhängige Tatsachen vermengt. Wie voll der Balken ist, kommt vom Wert; welche Farbe er hat, kommt von den Grenzen — und diese Grenzen haben üblicherweise Hysterese und Verzögerungen, die die Grafik nicht nachbauen sollte. Beides getrennt zu halten heißt: Die Meldelogik bleibt an einer Stelle, und der Balken zeigt nur an, was sie entschieden hat.
Was Sie brauchen
Eine Balkengrafik, deren Füllung ein Rechteck mit fester linker Kante ist — das Beispiel unten ist in voller Länge gezeichnet, und zwar mit Absicht: Die Rechnung leitet sich aus genau dieser Vollausschlag-Geometrie ab, die Zeichnung trägt die Zahlen also mit sich.
Aus der SPS brauchen Sie den Wert als Zahl und die beiden Grenzbits, die Ihre Meldelogik ohnehin liefert.
| Parameter | Typ | Wofür |
|---|---|---|
| Value | string | Der Wert in Prozent, 0 bis 100. |
| HiLimit | boolean | HI-Grenze, aus der Meldelogik. |
| LoLimit | boolean | LO-Grenze, aus der Meldelogik. |
| ValueText | string | Die Zahl in der Anzeige, bereits formatiert. |
Schritt für Schritt
1. Den Balken so lang machen wie den Wert
Wählen Sie den Balken aus und fügen Sie ein Custom Attribute-Binding hinzu. Setzen Sie das Attribut auf
widthund den Ausdruck auf{{ParamProps.Value * 2.8}}.Der Balken im Beispiel beginnt bei
x=20und ist bei Vollausschlag 280 Einheiten lang, ein Prozent sind also 2,8 Einheiten. Weil die linke Kante sich nie bewegt, ist die Breite die gesamte Geometrie — mehr braucht kein Binding.

2. Ihn aus den Grenzen einfärben
Fügen Sie beim weiterhin ausgewählten Balken ein Cond. Fill (Multi-Bool)-Binding mit zwei Zeilen hinzu:
HiLimitin Rot, dannLoLimitin Gelb, mit dem normalen Blau als Rückfallfarbe.Zwei Bindings auf demselben Element sind normal und gewöhnungswürdig — eines steuert die Geometrie, das andere das Aussehen, und sie kommen sich nie in die Quere.


3. Die Anzeige ergänzen
Wählen Sie die Zahlenanzeige aus und fügen Sie ein Text Content-Binding mit dem Namen
ValueTexthinzu. Ein Balken beantwortet auf einen Blick „ungefähr wie viel“; die Zahl beantwortet „genau wie viel“, wenn es jemand braucht — und ein Balken ohne sie schickt die Leute auf die Suche nach einem Faceplate.

Prüfen
Öffnen Sie Simulieren und ziehen Sie Value von 0 auf 100. Der Balken muss bei nichts anfangen und genau an der 100-%-Marke enden. Schießt er über die Spur hinaus oder bleibt davor stehen, passt der Faktor nicht zur Zeichnung.
Setzen Sie danach beide Grenzbits gleichzeitig. Das ist kein Zustand, den die Anlage erzeugen sollte, aber die Antwort muss trotzdem eindeutig sein — die obere Zeile gewinnt, jedes Mal.
Für die Simulation ist ein kostenloses Konto nötig. Für alles davor nicht.
Varianten
- Ein senkrechter Balken. Steuern Sie stattdessen
heightund bewegen Sie die Oberkante mit einem zweiten Ausdruck aufy, damit der Balken von einer festen Basis nach oben wächst. - Im Ausdruck skalieren. Liegt der Tag in technischen Einheiten statt in Prozent vor, teilen Sie im selben Ausdruck durch den Bereich:
{{ParamProps.Bar / 16 * 280}}. - Grenzen aus einer Zustandszahl. Ersetzen Sie das Multi-Bool durch Cond. Fill (Number), wenn Ihre Meldelogik ein Zustandswort statt einzelner Bits liefert.
Fragen
- Woher kommt die 2,8?
- Aus der Zeichnung. Der Balken ist bei Vollausschlag 280 Einheiten lang und der Wert läuft bis 100, ein Prozent sind also 2,8 Einheiten. Lesen Sie ihn aus Ihrer eigenen Grafik ab, statt diesen zu übernehmen.
- Warum die Farbe nicht aus dem Wert berechnen?
- Weil Grenzen üblicherweise Hysterese und Verzögerungen haben. Sie in der Grafik nachzubauen erzeugt zwei Stellen, die sich darüber uneinig sein können, ob die Anlage in Störung ist. Lassen Sie die Meldelogik entscheiden und den Balken anzeigen, was sie entschieden hat.
- Kann ein Element zwei Bindings tragen?
- Ja. Hier hat der Balken einen Breitenausdruck und eine Farbe — die normale Form für alles, dessen Größe und Aussehen aus verschiedenen Tatsachen stammen.
- Warum ist der Balken zur Entwurfszeit voll gezeichnet?
- Weil die Vollausschlag-Geometrie das ist, woraus sich die Rechnung ableitet. Voll gezeichnet lässt sich der Faktor direkt am Element ablesen, statt gemessen werden zu müssen.