Ereignisse von Grafikobjekten
Events sind Ereignisse von Grafikobjekten, bei deren Aktivierung Skripts aufgerufen werden können. Standardmäßig gibt es:
-
Ereignisse Aktion Acknowledge Quittieren Activated Beim Drücken der Enter oder Return Taste oder Doppelklick auf ein Datum im Kalender Widget. AreaClosed AreaClosed(int area);
Das Ereignis wird ausgelöst wenn eine Area innerhalb des Trends geschlossen wird. Bitte beachten Sie, dass der übergebene area Parameter den momentanen Index der Area und keine fixe ID repräsentiert. Der Index kann sich abhängig von der Anzahl an verfügbaren Areas innerhalb des Trends ändern.
CursorPositionChanged Wird immer, wenn sich die Cursorposition bei einem textEdit-Dokument ändert, gestartet. Change Änderung der Slider-Position. Changed Wenn ein Element einer Selektionsliste selektiert wird. Clicked Linksklick. Für einfache Grafikobjekte kann dieses Ereignis auch mit anderen verfügbaren Maustasten ausgelöst werden. Die Ausnahme bildet hierbei der Rechtsklick, für welchen ein eigenes Ereignis existiert. Die verwendete Maustaste wird in dem Mapping "event", welches an das Script weitergegeben wird, spezifiziert.
Anmerkung: Um die mittlere Maustaste zum Starten von Skripten zu verwenden, muss zuvor das Panning mit dem Config-Eintrag [ui] middleMousePanning deaktiviert werden.Beachten Sie, dass wenn das Ereignis MousePressed auch definiert ist, es Vorrang gegenüber dem Clicked Ereignis hat.
Dieses Ereignis wird nur ausgelöst wenn die Maustaste freigegeben wird auf dem Objekt auf welchem das Clicked Ereignis gestartet wurde.
Command Ein Textfeld-Ereignis. Das Ereignis wird ausgeführt, wenn die Eingabetaste gedrückt wird. CurrentPageChanged Beim Ändern des Monats oder Jahres im Kalender Widget. Das neue Jahr und der neue Monat werden als Parameter übergeben. CurveDataError Jedes DPE, welches in der Antwort von dpGetPeriod einen Fehler vom Data-Manager erhält, löst dieses Script aus (Verfügbar für: Trend). CurvesScaled CurvesScaled(dyn_string curves);
Das Ereignis wird nach einer Zeitüberschreitung von 500ms ausgelöst und liefert in einem dyn_string alle Kurvennamen eines Trends, die verändert wurden (Verschiebung, Zoom etc.).
DoubleClicked Doppelklick links.
Beachten Sie, dass, wenn das Ereignis MousePressed/MouseReleased auch definiert ist, es Vorrang gegenüber dem DoubleClicked Ereignis hat.
Sollte kein Skript für das DoubleClick Ereignis hinterlegt sein führt ein Doppelklick zwei aufeinander folgende einfache Klicks aus. Gilt für einfache Grafikobjekte sowie die Schaltfläche.
DragDrop Das Ereignis wird gestartet, wenn der Benutzer die Information droppt und die Shape informiert das System über dropAccept() die dropped Information zu akzeptieren. Für mehr Information siehe Drag & Drop zur Laufzeit. DragEnter Dieses Ereignis wird nur dann gestartet, wenn die Shape Drops akzeptiert (Drop erlauben-Attribut im Attribut-Editor wurde gesetzt) und nicht deaktiviert ist. Für mehr Information siehe Drag & Drop zur Laufzeit. DragStart Das Ereignis wird nur dann, gestartet wenn das "Drag erlauben"-Attribut im Attribut-Editor auf "TRUE" gesetzt wird. Für mehr Information siehe Drag & Drop zur Laufzeit.
VORSICHT: Per Default können die selektierten Zellen einer Tabelle direkt z.B. auf ein Textwidget gedroppt werden. Voraussetzung dafür ist dass das Event 'dragStart' noch nicht modifiziert worden ist!Wird nun eine Code-Zeile eingetragen und wieder gelöscht so können die Zellen nicht mehr gedroppt werden. Damit aber das Verhalten per default wieder funktioniert, muss nun das ganze Script inklusive main{} gelöscht werden.
GestureTriggered Dieses Ereignis wird durch ein Swipe-Gesture auf ein eingebettetes Modul gestartet (nähere Informationen finden Sie unter Eigenschaften und Ereignisse des Panels) HeaderClicked Löst ein Ereignis aus, wenn auf den Spaltenkopf einer Tabelle ein linker Mausklick getätigt wird. Initialize Beim Aufschalten Anmerkung: Die Reihenfolge kann nicht bestimmt werdenKeyboardFocusIn Bei Fokus KeyboardFocusOut Bei Fokusverlust LangChanged Wenn die Sprache gewechselt wird. ModificationChanged ModificationChanged(bool mod)
Das Ereignis wird gestartet, wenn sich der Modifikationsstatus des textEdit-Dokuments geändert hat. Wenn mod TRUE ist wurde das Dokument modifiziert. Ansonsten wurde der Modifikationsstatus auf unmodified (nicht modifiziert) gesetzt.
MousePressed Linke Maustaste gedrückt. Für einfache Grafikobjekte kann dieses Ereignis auch mit anderen verfügbaren Maustasten ausgelöst werden. Die Ausnahme bildet hierbei der Rechtsklick, für welchen ein eigenes Ereignis existiert. Die verwendete Maustaste wird in dem Mapping "event", welches an das Script weitergegeben wird, spezifiziert.
Anmerkung: Um die mittlere Maustaste zum starten von Skripten zu verwenden, muss zuvor das Panning mit dem Config-Eintrag [ui] middleMousePanning deaktiviert werden.D.h. das Skript wird gestartet, sobald die Maustaste gedrückt wird. Ob sie danach auch wieder losgelassen wird, ist bedeutungslos.
Wird die Maus mit gedrückter Maustaste über den Rand der Schaltfläche oder eines einfachen Grafikobjekts bewegt, wird jedes Mal das Ereignis ausgelöst, sobald der Maus-Cursor wieder das Objekt berührt.
MouseReleased Linke Maustaste loslassen. Für einfache Grafikobjekte kann dieses Ereignis auch mit anderen verfügbaren Maustasten ausgelöst werden. Die Ausnahme bildet hierbei der Rechtsklick, für welchen ein eigenes Ereignis existiert. Die verwendete Maustaste wird in dem Mapping "event", welches an das Script weitergegeben wird, spezifiziert.
Anmerkung: Um die mittlere Maustaste zum starten von Skripten zu verwenden, muss zuvor das Panning mit dem Config-Eintrag [ui] middleMousePanning deaktiviert werden.Das Skript wird ausgelöst, wenn sich die Maustaste wieder nach oben bewegt. Das kann entweder sein, wenn die Maustaste losgelassen wird oder wenn die Maus von der Schaltfläche bzw. dem einfachen Grafikobjekt wegbewegt wird.
Das Ereignis wird erneut ausgelöst wenn die Maus den Bereich des Objektes wieder betritt und nochmals verlässt.
MouseOver Maus wird über dem Objekt bewegt.
Anmerkung: Beachten Sie, dass das MouseOver-Ereignis einen bool-Parameter hat, der beim Eintreten vom Ereignis == TRUE ist und beim Verlassen des Objektes == FALSE ist. Auf diese Weise können z.B. verschiedene Hintergrundfarben abhängig von der Position der Maus gesetzt werden.OnButtonDblClk Doppelklick links (im DPTree) OnLButtonClk Linksklick (im DpTree) OnDpTypeChanging
OnDpTypeChanged
OnDpTypeChanging wird beim DPTree aufgerufen, wenn createDpType() aufgerufen wird. D.H. wenn ein Datenpunkttyp erstellt wird. OnDpTypeChanged wird wiederum aufgerufen, wenn dpTypeEditor() aufgerufen wird und ein Datenpunkttyp erstellt wurde (es wurde die OK-Schaltfläche gedrückt). Resized Wird ausgelöst wenn das Objekt in seiner Größe verändert wird. ReturnPressed Wird ausgelöst wenn die Return-Taste gedrückt wird. RightMousePressed Rechtsklick. Scrolled Um nur Daten, die zurzeit angezeigt werden, abzufragen und um aufwendige Abfragen, die lange dauern, zu vermeiden, wurde ein Scrolled-Event implementiert. Dadurch können Daten für einen Bereich angefordert werden, wenn Sie scrollen und dieser Bereich sichtbar wird. Das scrolled-Ereignis wird 0.3 Sekunden nachdem Sie das Bildschirmverschieben beendet haben, ausgeführt. Beachten Sie, dass die Tabelle mit Zeilen gefüllt sein muss. SelectionChanged Beim Wechseln der Registerkarte oder
wenn sich der "selected" Status einer primitiven Shape sich ändert, entweder interaktiv durch den Benutzer, der die Shape selektiert oder durch den CTRL-Programmierer, der das Attribut im Code setzt. Siehe Mehrfachselektion zur Laufzeit.
Oder immer wenn selektierte Zeilen einer Tabelle geändert werden z.B. über die Tastatur oder Multiselektion.
Beachten Sie dabei dass Sie die folgenden Funktionen bei der Tabelle aktivieren müssen:
TABLE1.tableMode
(TABLE_SELECT_MULTIPLE);
TABLE1.selectByClick(3);
Slide Wenn Slider (Schiebebalken) geschoben wird. TextChanged Das Ereignis ist nur für die Grafikobjekte textEdit und Textfeld verfügbar. Es wird bei der Benutzereingabe eines Textes oder der Texteingabe via Control-Code aufgerufen.
Innerhalb des Ereignisses kann auf den Text mittels des Ereignis-Parameters
newText
zugegriffen werden.TabCloseRequested Das Ereignis ist nur für das Grafikobjekt Registerkarte verwendbar. Es wird aufgerufen wenn versucht wird eine Registerkarte zu schließen. Wheel Wheel(mapping event)
Das "Wheel" Ereignis kann verwendet werden um auf Eingaben durch das Mausrad zu reagieren. Es steht nur für das Panel zur Verfügung. Ein Beispiel findet sich hier.
Das "event" Mapping beinhaltet folgende Informationen:
Schlüssel Wert type "Wheel" buttons MOUSE_LEFT
MOUSE_RIGHT
MOUSE_MIDDLE
Repräsentiert den Zustand der Maustasten beim Auslösen des Ereignisses. Der "buttons" Zustand ist eine ODER Kombination der MOUSE_* Elemente oberhalb.
buttonsAsString “LeftButton”
“RightButton”
“MiddleButton”
Die Namen der Tasten welche beim Auslösen des Ereignisses gedrückt sind. Wenn mehrere Tasten gedrückt sind werden diese als ein String mit einem "|" Charakter als Trennzeichen zurückgeliefert.
modifiers KEY_SHIFT
KEY_CONTROL
KEY_ALT
KEY_META
Repräsentiert den Zustand der Tastatur "Modifier" Tasten beim Auslösen des Ereignisses. Der "modifiers" Zustand ist eine ODER Kombination der KEY_* Elemente oberhalb.
modifiersAsString ”ShiftModifier”
”ControlModifier”
”AltModifier”
“MetaModifier”
Die Namen der Tasten welche beim Auslösen des Ereignisses gedrückt sind. Wenn mehrere Tasten gedrückt sind werden diese als ein String mit einem "|" Charakter als Trennzeichen zurückgeliefert.
localPos X,Y Mapping der relativen Postion innerhalb des Panels. globalPos X,Y Mapping der relativen Position auf dem globalen Schirm. angleDelta X,Y Mapping der Mausrad Rotation.
Liefert die Distanz die das Mausrad rotiert ist als Achtel eines Grades. Ein positiver Wert zeigt an, dass das Mausrad vorwärts rotiert wurde, d.h. weg vom Benutzer. Ein negativer Wert zeigt an, dass das Mausrad rückwärts rotiert wurde, d.h. zum Benutzer. Die meisten Maustypen verwenden Rotationsschritte von 15 Grad. In diesem Fall ist der Delta Wert ein Vielfaches von 120, d.h.:
120 Einheiten * 1/8 = 15 Grad.
isSynthesized Liefert TRUE wenn das Ereignis durch ein "Touch" Ereignis ausgelöst wurde.
-
Ereignisse, die beim Aufschalten des Panels bei der Initialisierung ausgelöst werden (Initialize). Initialize wird nicht aufgerufen, wenn dies bei den Panel-Attributen, also nicht für ein Grafikobjekt definiert wurde.
-
Klickereignisse, die benutzergesteuert aufgerufen werden (durch Mausklick).
-
Ereignisse, die durch eine Änderung von Slider-Position ausgelöst werden.
-
Ereignisse, die durch die Fokuslage ausgelöst werden (KeyboardFocusIn, KeyboardFocusOut)
-
Meldeereignisse, die durch einen Meldezustand ausgelöst werden.
-
Ereignisse, die beim Wechseln der Registerkarte ausgelöst werden (SelectionChanged).
-
Ereignisse, die durch Schließen von Panels ausgelöst werden (Terminate).
-
Ereignisse, die beim Wechseln der Sprache ausgelöst werden (LangChanged).
-
Ereignisse, die ausgelöst werden, wenn die Maus über das Objekt bewegt wird.
Bei einer Schaltfläche existiert das Ereignis DoubleClicked aber dieses wird durch einen Klick durchgeführt, d.h. es gibt keine Unterscheidung zwischen Single- und Doppelklick. Wir empfehlen auch bei der Tabelle, Radio- und Checkbox sowie Textfeld entweder das Ereignis "Clicked" oder "DoubleClicked" zu verwenden.
Verwenden Sie die Funktion setInputFocus() nicht bei Skripts zu KeyboardFocusIn.
Abbildung: Ereignisse für ein Objekt vom Typ Rechteck
Für "Acknowledge" besteht nur die Möglichkeit über den Dialog der Einfachen Parametrierung dem Event ein Skript zuzuweisen. Da dieses Skript ein fixes Format haben muss, weil es auch für Hochmeldungen verwendet wird, kann es nicht über den Skript-Editor modifiziert werden.
Sollten bei der Verwendung von KeyboardFocusOut zwei Skripts parallel laufen (KeyboardFocusOut vom Shape, das den Fokus verliert, und Clicked vom Shape, das den Fokus bekommt), dann stellt WinCC OA sicher, dass zuerst das KeyboardFocusOut -Skript gestartet wird.
Es ist nicht erlaubt im KeyboardFocusOut und KeyboardFocusIn eine Funktion, welche die Sichtbarkeit, die Aktiv/Inaktiv-Eigenschaft oder den Fokus des Objektes ändert, aufzurufen.
Die Grafikobjekte vom Typ Combobox und Auswahlliste bieten keinen Clicked (sondern ein Changed).
Wheel Ereignis Beispiel
Folgendes Beispiel zeigt wie das "Wheel" Ereignis für das Zoomen innerhalb des Panels verwendet werden kann.
main(mapping event)
{
float factor = (event.angleDelta.y / 120.0) * 1.1;
if ( factor > 0.0 )
panelZoomIn(myModuleName(), factor, event.localPos);
else
panelZoomOut(myModuleName(), -factor, event.localPos);
}