Pages
Button Group Widget
Das Button Group-Widget ist ein UI-Element, das es Benutzern ermöglicht, genau eine Option aus einer definierten Gruppe von Buttons auszuwählen. Es wird typischerweise verwendet, um benutzerdefinierte Umschalter wie Theme-Auswahl, Modusauswahl, Layout-Umschaltung oder andere sich gegenseitig ausschließende Optionen zu erstellen.
Das Widget verwaltet und speichert den aktuell aktiven Zustand und kann entweder konfiguriert werden über:
- Lokal über eine JSON-Konfigurationsdatei
- Remote über CODESYS
1. Übersicht
Die Button Group:
- Zeigt mehrere Buttons innerhalb einer logischen Gruppe an
- Erlaubt immer nur einen aktiven (ausgewählten) Button
- Verfolgt den ausgewählten Zustand intern
- Stellt den ausgewählten Wert für externe Logik bereit
- Unterstützt Remote-Statusupdates über CODESYS
Typische Anwendungsfälle
- Theme-Umschaltung (Hell / Dunkel / System)
- Auswahl des Betriebsmodus (Auto / Manuell / Service)
- Layout-Auswahl
- Sprachauswahl
- Auswahl eines Gerätesteuerungsmodus
2. Funktionales Verhalten
2.1 Auswahl-Logik
- Es kann immer nur ein Button gleichzeitig aktiv sein.
- Beim Auswählen eines Buttons:
- Wird der aktuell aktive Button deaktiviert
- Wird der ausgewählte Button aktiviert
- Wird der interne Zustand aktualisiert
- Wird die konfigurierte Ausgabe ausgelöst (JSON-Bindung oder CODESYS-Variablenupdate)
3. Konfiguration über JSON
Die Button Group kann über eine JSON-Konfigurationsdatei definiert werden.
3.1 Grundstruktur
id
Unique Identifier, um Buttons zu unterscheiden.
label
Ein String, den der Nutzer angeben muss, um ein benutzerdefiniertes Label für den Button anzuzeigen.
disabled
Ein Boolean, welcher je nach Wert den Button im 'disabled' Zustand anzeigt. Im disabled Zustand wird der Button angezeigt, kann aber nicht benutzt werden.
visible
Boolean, der festlegt ob ein Button in der Gruppe angezeigt wird.
[
{
"id": 0,
"label": "Option 1",
"disabled": false,
"visible": true
},
{
"id": 1,
"label": "Option 2",
"disabled": false,
"visible": true
}
]
CODESYS Structure
FOR i:=0 TO 20 BY 1 DO
buttonGroup.options[i].id := TO_BYTE(i);
buttonGroup.options[i].label := CONCAT('label_', INT_TO_STRING(i));
END_FOR