UseBaObjectsInUserControl
Beschreibung
Ein UserControl liest standardmäßig die komplette Struktur aus die hinter einem verknüpften Parameter liegt, was zu einem hohen Kommunikationsaufkommen führen kann. Bei einem BaObjekt (z.B. BaView) können das schnell sehr viele Daten werden.
Diese Funktion reduziert, bei Verwendung eines BaObjekts als Parameter in einem UserControl, die Server-Kommunikation auf ein Minimum.
Verwendung
Der Parameter vom UserControl für das BaObjekt muss vom Typ Symbol sein. Durch diese Definition wird der Parameter nicht ausgelesen, sondern nur weitergegeben.
Ebenfalls muss der Name des Parameters BaObject heißen!

![]() | Auf diese Weise ist kein Zugriff mehr auf die unterliegenden Symbole des BaObjekts möglich. |
Der Aufruf der Funktion soll immer dann erfolgen, wenn der BaObject-Parameter geändert wurde.
Dazu wird ein neues Event .BaObject erzeugt.


Im Konfigurationsfenster des Events wird die Funktion im Ordner "Functions > BuildingAutomation > UseBaObjectInUserControl" ausgewählt.

Die Verknüpfung der Controls im UserControl mit dem BaObjekt oder dessen Unterelementen erfolgt dann über die Identifier der Controls.
![]() | Es ist ebenfalls möglich UserControls innerhalb eines UserControls mit BaObjekten zu verbinden. |
Verknüpfung
BaObjekt
Zur direkten Verwendung des BaObjekts muss das Control den Identifier $UserControlName$.Root tragen.
$UserControlName$ wird dabei mit dem Namen des UserControls ersetzt.

![]() | Es ist darauf zu achten, dass das Wurzelelement des UserControls, den selben Namen hat, wie die Datei des UserControls. |
Unterelemente vom BaObjekt
Zur Verwendung eines Unterelements muss das Control den Symbolpfad als Identifier tragen.
Erläuterung am Beispiel eines BaView mit folgendem Aufbau.

Zugriff auf das Element Pu erfolgt über den Symbolpfad $UserControlName$.Pu als Identifier.

Zugriff auf das Element Cmd erfolgt über den Symbolpfad $UserControlName$.Pu.Cmd als Identifier.

Parameter vom BaObjekt
Zugriff auf den Parameter eines Elements erfolgt über den Symbolpfad.
Zum Beispiel:
- $UserControlName$.Root.sDescription
- $UserControlName$.Pu.Cmd.bPresentValue
- $UserControlName$.OpMod.OpModMan.nPresentValue
- $UserControlName$.HtgLmt.Sp.fPresentValue
Ist das Control vom Typ Checkbox, Combobox oder InputBox, dann wird nach dem Beenden der Benutzerinteraktion der Wert des Parameters in die SPS geschrieben.
Ohne BaObjekt oder BaParameter
Soll das Control oder UserControl innerhalb des UserControls nicht mit einem BaObjekt oder BaParameter arbeiten, dann darf der Identifier des Controls nicht $UserControlName$. enthalten.
Parameter
UserControl
tchmi:framework#/definitions/TcHmi.Controls.System.TcHmiUserControl
Das UserControl in dem die BaObjekte verwendet werden sollen. Meistens ist dieser Parameter das UserControl selbst (self).
BaObject
tchmi:general#/definitions/Object
Mit diesem Parameter muss der UserControl-Parameter, mit dem das BaObjekt von außen verbunden wird, verknüpft werden.