Skip to content
Menu

Knowledge Base

KB050117 | DYNAMISCHE ELEMENTE IN DER ELVIS-BEDIENSTATION

KB050117 | DYNAMISCHE ELEMENTE IN DER ELVIS-BEDIENSTATION

Produkt: Elvis
Version: ab 2.0 (Beispielprojekt erstellt mit 2.3)
Stand: 2005-01-18

Zusammenfassung

Hier finden Sie Informationen und Downloads für grafische Elemente, die durch die Ereignisverarbeitung der Bedienstation bewegt oder verändert werden.

Achtung: Hier werden keine Kontrollelemente verändert, sondern „ganz normale“ grafische Elemente wie Linien oder Polygone. Dieser Bereich ist also nicht für die Lösung von Standardaufgaben oder gar für einen Einsteiger in Elvis gedacht, sondern für die Elvis-Profis oder für Programmierer, die noch mehr Dynamik auf die Seiten bringen wollen.

Einzelheiten

Allgemeines
Einstimmung

Laden Sie das kleine Dynamik-Projekt (dynamic.zip) herunter, öffnen Sie die Seite „blind“ in der Projektierung und spielen Sie etwas mit dem Schieberegler (Benutzermodus!). Die Seite „polygon“ enthält auch einen interessanten Effekt.

Eine nette Sache? Sie wollen wissen, wie das geht? Lesen Sie weiter!

Zugriff auf grafische Elemente

Alle Eigenschaften von grafischen Elementen können über die Ereignisverarbeitung der Bedienstation verändert werden – ja wirklich!
Die Schwierigkeit liegt zunächst nur im Zugriff auf das Element. Leider haben die Elemente keinen Namen (wie z.B. die Kontrollelemente). Alle Elemente haben aber einen Datenpunktnamen (DatapointName). [Bitte keine Kommentare dazu – ich kann das auch nicht nachvollziehen.]
Mit dem Datenpunktnamen können wir uns gut behelfen.
Leider gibt es für die grafischen Elemente kein User-Interface für das Setzen oder Verändern dieses Datenpunktnamens (ist im Eigenschaftsdialog nicht enthalten). Abhilfe: wir benutzen ein kleines Makro, mit dem wir dem Element einen Datenpunktnamen geben. Damit haben wir schon alle Hürden für den Zugriff genommen!

Füllart eines Polygons dynamisch verändern
set_dpname

Das Makro setzt den Datenpunktnamen für ein selektiertes grafisches Element (z.B. ein Polygon). Es ist recht einfach aufgebaut. Das Programm enthält eigentlich nur zwei interessante Zeilen:
Hier wird das Objekt „Element“ auf das selektierte Element der Zeichnung gesetzt:
Set Element = Drawing.ActiveElement

und hier wird der Datenpunktname aus dem Dialog in der Eigenschaft „DatapointName“ des Elements gespeichert:
Element.DatapointName = dlg.ctlDatapointName

RTEmagicC 2b7e9b0a11.jpg

Download set_dpname.idm

Füllart eines Polygons über Datenpunktwerte verändern

Wenn sie den Fülleffekt von Polygonen über Datenpunktwerte setzen möchten, sind einige Ereignisse zu verarbeiten. Hier finden Sie ein kleines Beispiel das den Fülleffekt über Datenpunktwerte setzt und damit besser auf die Verwendung in einem Projekt abgestimmt ist.

Download dynamic_dp.zip

Ereignisverarbeitung

Jetzt wollen wir das grafische Element verändern. Dazu müssen wir es zuerst auf einer Seite finden und dann eine oder mehrere seiner Eigenschaften verändern. Damit wir ein Element finden können, hat es ja einen Datenpunktnamen erhalten (siehe oben).
Das Finden soll möglichst schnell gehen. Deshalb ist es gut, wenn wir die Suche nicht im ganzen Dokument (also in allen Schichten) durchführen müssen, sondern uns auf eine Schicht beschränken können. Wenn diese Schicht nur wenige Elemente enthält, geht die Suche natürlich noch schneller.
Fazit: Wir benutzen für unsere dynamischen Elemente eine eigene Schicht. Diese Schicht nennen wir „Dynamik“ (es kann natürlich auch jeder andere Name verwendet werden – das ist dann natürlich in der Ereignisverarbeitung zu berücksichtigen).

Damit die Ereignisverarbeitung übersichtlich bleibt, verwenden wir ein Unterprogramm, das wir im globalen Bereich der Form ablegen. Das Unterprogramm soll „SetFillStyle“ heißen, weil wir damit die Füllung des Elements zwischen gefüllt und ungefüllten umschalten. Es hat zwei Parameter: den Datenpunktnamen und den Wert. Das Unterprogramm sucht alle Elemente der Schicht „Dynamik“, deren Datenpunktname dem übergebenen Namen entspricht und setzt deren FillStyle auf 1, wenn der Wert nicht Null ist, andernfalls wird der FillStyle auf 0 gesetzt.

RTEmagicC fb3d4df7b2.jpg

Das Programm ist im Beispielprojekt (Seite „polygon“) enthalten.

Steigerung: Linie drehen

Wenn wir das Verändern von Eigenschaften grafischer Elemente (Polygon) grundsätzlich verstanden haben, können wir uns an eine etwas größere Aufgabe wagen.
Die Lamellenstellung von Jalousien kann durch Linien grafisch dargestellt werden. Die Koordinaten der Linien müssen für den jeweiligen Stellwert berechnet werden. Die mathematischen Grundlagen sind auf der Seite „blind“ enthalten.

Die Besonderheit der Lösung ist die Speicherung der Koordinaten des Mittelpunkts. Das ist notwendig, damit die Linie immer an ein und der selben Stelle gezeichnet wird und auch nach sehr vielen Berechnungen ihre Position beibehält. Außerdem wird auch die Länge der Linie gespeichert. Da für diese Daten keine Eigenschaften vorgesehen sind, werden die Koordinaten des Mittelpunkts und die Länge zusammen in der Eigenschaft HistoryName abgelegt. Das ist eine etwas unsaubere Verwendung dieser Eigenschaft. Da die Eigenschaft für grafische Elemente aber bedeutungslos ist, sollten wir damit keine Probleme bekommen.

set_blind

Damit das Setzen des Datenpunktnamens, des Mittelpunkts und der Länge einfach ist, habe ich auch hier ein kleines Makro bereitgestellt:

Download set_blind.idm

Ereignisverarbeitung

Für die Ereignisverarbeitung verwenden wir wieder ein Unterprogramm („Blind“). Prinzipiell ist das Programm aufgebaut wie oben (SetFillStyle), jetzt werden aber auch noch die Daten aus dem HistoryName verwendet, um die Koordinaten der Linie zu berechnen und neu zu setzen.

RTEmagicC 82f7f35a81.jpg

Es sollte Ihnen keine Probleme bereiten, die Beispiele auf die Verwendung von Datenpunktwerten zu übertragen. Wenn es hier doch Fragen gibt, wenden Sie sich an den Webmaster.

set_blinds

Hier noch eine Steigerung des Ganzen! Mit dem Makro set_blinds werden automatisch die Lamellen (Linien) erzeugt und mit dem Datenpunkt verbunden.

RTEmagicC 42b2967afc.jpg

Das Ergebnis sieht dann z.B. so aus:

RTEmagicC b1c1e5734e.jpg

Download dyn.zip

Support Area

KB050117 | DYNAMISCHE ELEMENTE IN DER ELVIS-BEDIENSTATION

Knowledge Base

Hier finden Sie Antworten, Problemlösungen und Beispiele zu unseren Produkten.
KB050117 | DYNAMISCHE ELEMENTE IN DER ELVIS-BEDIENSTATION

Case Studies

Erfolgreich im Einsatz: Praxisbeispiele unserer Produkte und Individualentwicklungen.
KB050117 | DYNAMISCHE ELEMENTE IN DER ELVIS-BEDIENSTATION

Support

Beschreiben Sie ihr Anliegen über unser Supportformular.
KB050117 | DYNAMISCHE ELEMENTE IN DER ELVIS-BEDIENSTATION

Lizenzregistrierung

Registrieren Sie ihre Elvis-Lizenz!

IT GmbH · An der Kaufleite 12 · D-90562 Kalchreuth

KB050117 | DYNAMISCHE ELEMENTE IN DER ELVIS-BEDIENSTATION

BÜRO
Telefon: +49 911 5183490
E-Mail: info@it-gmbh.de

VERTRIEB
Telefon: +49 911 5183490
E-Mail: vertrieb@it-gmbh.de

partner-knx

© Copyright 2024. IT GmbH | designed by Appear Online