GUI-Variablen & Events
In SVGANIMATE- und SVGEVENT-Formeln stehen neben den normalen Formelvariablen diese Namensräume zur Verfügung. Unbekannte Namen sind lokale Variablen des Widgets und bleiben zwischen den Zeichenvorgängen erhalten.
$.GUI.* – Kachel und Theme
| Variable | Bedeutung |
|---|---|
$.GUI.W, $.GUI.H |
Kachelgröße in Pixeln |
$.GUI.SCALE |
aktueller Skalierungsfaktor |
$.GUI.WIDGETTYPE |
Größenklasse aus den Pixelmaßen (0, 1, 501…1008, siehe Konzept) |
$.GUI.SIZE |
vom System übergebener Größenparameter |
$.GUI.COLORBKG / COLORFRG / COLORFNT |
Theme-Farben Hintergrund / Vordergrund / Schrift |
$.GUI.FONTLABEL |
Schriftgröße für Beschriftungen |
$.GUI.FONTVALUE |
Schriftgröße für Werte (korrigiert 04.11.2026: liefert jetzt den Wert-Font) |
$.GUI.SYSTEM |
Neu: Systemnummer des Elements (isys) |
$.GUI.LANGUAGE |
Neu: Sprache des Displays (webviserdisplay[0].ilanguage) |
$.GUI.VERSION |
Neu: Version des Displays (webviserdisplay[0].iversion) |
$.GUI.HWID |
Hardware-ID des Displays (webviserdisplay[0].ihwid) |
$.GUI.LOGINLEVEL |
Neu (09.11.2026): Anmelde-/Berechtigungsstufe laut grafikMenuConfig_getLogStateLevel(). Werte siehe Tabelle unten. |
| Wert | Bedeutung |
|---|---|
0 |
nicht angemeldet |
1 |
User |
2 |
Techniker für Parameterebene |
3 |
Installateur |
(Quelle: Aussage Hartwig Weidacher, 09.11.2026.)
Beispiel: Edit-Symbol nur für Techniker und Installateur zeichnen:
IF $.GUI.LOGINLEVEL >= 2 THEN
GUI.paintSVG('Edit',0,0,40,40,0,'X','');
ENDIF;
Systemvariablen des Objekts
| Variable | Bedeutung |
|---|---|
$.CTRLVAR.<name> |
Variable relativ zum aktuellen Element, z. B. $.CTRLVAR.rgstate[0], $.CTRLVAR.sg[1], $.CTRLVAR.isys. Wird über getsetbyName(…, BASE, …) aufgelöst (geändert 09.11.2026). |
$.CTRLROOTVAR.<pfad> |
Variable relativ zur Wurzel des Controllers, z. B. $.CTRLROOTVAR.heiz.an0.rgstate[0]. Auflösung über getsetbyName(…, ROOT, …). |
$.CTRLMAINVAR.<pfad> |
wie ROOT, aber auf den Haupt-Controller (bei Verbundsystemen); Auflösung über getsetbyName(…, MAIN, …). |
Entfernt (beabsichtigt, 09.11.2026)
$.VARLOCAL, $.VARGLOBAL und $.VARMAIN werden nicht mehr ausgewertet. Alte DDF müssen umgestellt werden, typischerweise auf $.VAL.<alias> / $.VAR.<alias> (varmap-Alias) oder auf $.CTRLVAR / $.CTRLROOTVAR / $.CTRLMAINVAR (Element-/Controller-Pfad). Siehe Änderungen.
Namen werden intern kleingeschrieben. Schreiben ($.CTRLVAR.x := wert;) sendet den Wert an das System.
Neu (04.11.2026)
Stand gSvg.cpp vom 04.11.2026.
Keine Typpräfixe mehr (09.11.2026)
Die früheren Präfixe d/i/r/s am Variablennamen gelten für $.CTRLVAR / $.CTRLROOTVAR / $.CTRLMAINVAR nicht mehr. Der Name wird relativ zu BASE / ROOT / MAIN direkt über getsetbyName aufgelöst (Aussage Hartwig Weidacher, 09.11.2026).
$.VAL.* / $.VAR.* und $.ISVAL.* / $.ISVAR.*
| Variable | Bedeutung |
|---|---|
$.VAL.<alias> bzw. $.VAR.<alias> |
liest/schreibt eine Variable über ihren Alias (varmap) |
$.ISVAL.<alias> bzw. $.ISVAR.<alias> |
Rückgabewert der Alias-Abfrage (> 0 = vorhanden). Zum Prüfen vor dem Lesen. |
IF $.ISVAL.temperature > 0 THEN
t := $.VAL.temperature;
ENDIF;
(Schematisches Beispiel.) $.VAL / $.VAR ersetzen die entfernten $.VARLOCAL / $.VARGLOBAL / $.VARMAIN.
Häufig genutzte Elementvariablen (aus der Visualization Library): sg[n] (Namen), rgstate[n] (Werte), sgunit[n] (Einheiten), ralarmmin[n] / ralarmmax[n], rmin / rmax, rToday[n] / rYesterday[n], isys (Systemnummer), iindex (Elementindex).
$.STYLE.* – CSS zur Laufzeit
farbe := $.STYLE.tile.fill; /* liest .tile { fill } der ersten Vorlage */
$.STYLE.Qual.tile.fill := '#203050'; /* setzt .tile { fill } der Vorlage 'Qual' */
$.STYLE.<klasse>.<eigenschaft>gilt für die erste Vorlage.$.STYLE.<alias>.<klasse>.<eigenschaft>gilt für eine bestimmte Vorlage.- Namen mit Sonderzeichen in
'…'setzen, z. B.$.STYLE.'text-primary'.fill.
$.MOUSE.* – Ereignisse (SVGEVENT)
| Variable | Bedeutung |
|---|---|
$.MOUSE.DOWN |
1 im Moment des Drückens (Flanke) |
$.MOUSE.UP |
1 beim Loslassen |
$.MOUSE.PRESSED |
1, solange gedrückt |
$.MOUSE.MOVING |
1 bei Bewegung |
$.MOUSE.X, $.MOUSE.Y |
Position in Pixeln der Kachel |
$.MOUSE.HANDLED |
auf 1 setzen, wenn das Widget das Ereignis verarbeitet hat (sonst greift die Standardbehandlung, z. B. Öffnen der Detailseite). Neu: Wurde das Drücken (DOWN) behandelt, gilt das zugehörige Loslassen (UP) automatisch auch als behandelt. |
Beispiel aus DEMO_DDF.csv: Nur ein Klick ins rechte untere Viertel wird vom Widget übernommen.
IF ($.MOUSE.X >( $.GUI.W/2)) && ($.MOUSE.Y >( $.GUI.H/2))THEN
$.MOUSE.HANDLED:=1;
test:=$.VAL.temperature;
ELSE
$.MOUSE.HANDLED:=0;
ENDIF;
(Das DEMO_DDF verwendete früher $.VARLOCAL / $.VARGLOBAL; diese Namen sind entfernt. Beispiel auf $.VAL umgestellt.)