Hallo zusammen,
eventuell hat ja jemand die gleiche Anforderung wie ich und kann das kleine Snippet brauchen.
Ziel:
Ein Zielobjekt anhand einesTriggerobjektes dynamisch ein/ausblenden.
Es macht meiner Meinung nach nur für String und Boolean Variablentypen Sinn, deshalb sind nur diese Varianten implementiert. Kann aber einfach erweitert werden, je nach Anforderung.
Vorgehen:
Man erstellt ein Ereignis unter dem Objekt welches man gerne ein/ausblenden möchte, und wählt ein Triggerobjekt aus (das Objekt auf dessen Wertänderung man gerne reagieren möchte). Wählt als Triggerzeitpunkt „Bei Variablenänderung“ aus und hinterlegt im Code Bereich das folgende Skript:
// Trigger ist eine Variable
if(IPS_GetObject($_IPS['VARIABLE'])['ObjectType'] == 2) {
$variable = IPS_GetVariable($_IPS['VARIABLE']);
$inverse = false;
if($variable['VariableValue']['ValueType'] == 3) { // Trigger ist vom Typ string
if(strlen(GetValue($_IPS['VARIABLE'])) > 0)
$state = FALSE;
else
$state = TRUE;
} else if($variable['VariableValue']['ValueType'] == 0) { // Trigger ist vom Typ boolean
if (GetValueBoolean($_IPS['VARIABLE']))
$state = FALSE;
else
$state = TRUE;
}
if($inverse)
$state = !$state;
IPS_SetHidden($_IPS['TARGET'], $state);
}
Tip:
Man kann das ganze auch in eine Funktion schachteln, $inverse = false fix als Parameter vorgeben ($inverse deklaration löschen nicht vergessen) und es dann global durch das autoinclude in jedem Skript bereitstellen. So habe ich es, neben einer Menge anderer Hilfsfunktionen, auch gemacht.
Gruß
Daniel
Edit:
Habe es noch etwas einfacher gemacht und eleganter umformuliert.