Ereignisgesteuerte Verarbeitung in Rich-UI
Jedes Widget enthält eine Gruppe von Eigenschaften zur Angabe der Funktionen, die als Antwort auf Laufzeitereignisse aufgerufen werden. Die Funktion wird in diesem Fall auch als Ereignishandler (Ereignisverarbeitungsfunktion) bezeichnet.
Ereignisse
In der folgenden Tabelle werden die verfügbaren Ereignisse aufgeführt, wobei Widgets bestimmter Typen auf bestimmte Ereignisse antworten. Schaltflächen (Widgets 'Button') antworten zum Beispiel auf onClick-Ereignisse, jedoch nicht auf onChange-Ereignisse. Beachten Sie auch, dass zwei Benutzeraktionen Ereignisse wie "Fokuserhalt" (onFocusGained: durch Ansteuern mit der Tabulatortaste oder Auswahl des Widgets) oder "Fokusverlust" (onFocusLost: durch Ansteuern mit der Tabulatortaste oder Auswahl eines anderen Widgets) beinhalten.
| Ereignis | Bedeutung |
|---|---|
| onChange | Ein Ereignis 'onChange' tritt auf, wenn der Benutzer ein Widget wechselt und den Anzeigefokus von diesem Widget wegbewegt, auch wenn der Benutzer den Wechsel wieder rückgängig macht. |
| onClick | Ein Ereignis 'onClick' tritt auf, wenn der Benutzer auf das Widget klickt. |
| onFocusGained | Ein Ereignis 'onFocusGained' tritt auf, wenn das Widget den Fokus erhält. |
| onFocusLost | Ein Ereignis 'onFocusLost' tritt auf, wenn das Widget den Fokus verliert. Ein funktional entsprechendes Ereignis in JavaScript ist 'onBlur'. |
| onKeyDown | Ein Ereignis 'onKeyDown' tritt auf, wenn der Benutzer eine beliebige Taste drückt. In vielen Browsern tritt das Ereignis wiederholt auf, solange der Benutzer die Taste drückt. Auf jedes Auftreten eines Ereignisses 'onKeyDown' folgt ein Auftreten des Ereignisses 'onKeyPress'. |
| onKeyPress | Ein Ereignis 'onKeyPress' tritt auf, wenn der Benutzer eine beliebige Taste drückt. In vielen Browsern tritt das Ereignis wiederholt auf, solange der Benutzer die Taste drückt. Jedem Auftreten des Ereignisses 'onKeyPress' geht ein Auftreten des Ereignisses 'onKeyDown' voran. |
| onKeyUp | Ein Ereignis 'onKeyUp' tritt auf, wenn der Benutzer eine gedrückte Taste wieder loslässt. |
| onMouseDown | Ein Ereignis 'onMouseDown' tritt auf, wenn der Benutzer eine der Maustasten drückt. |
| onMouseMove | Ein Ereignis 'onMouseMove' tritt wiederholt auf, wenn der Benutzer die Maus bewegt, während sich der Cursor auf der Anzeige innerhalb der Begrenzung des Widgets befindet. |
| onMouseOut | Ein Ereignis 'onMouseOut' tritt in dem Moment auf, wenn während der Mausbewegung durch den Benutzer der Cursor auf der Anzeige das Widget verlässt. |
| onMouseOver | Das Ereignis 'onMouseOver' ist ein Ereignis, das in JavaScript als 'onMouseIn' hätte bezeichnet werden können. Das Ereignis tritt in dem Moment auf, wenn während der Mausbewegung durch den Benutzer der Cursor auf der Anzeige in das Widget eintritt. Mithilfe dieses Ereignis können Sie zum Beispiel das Cursorsymbol für einen bestimmten Bereich der Seite ändern. |
| onMouseUp | Ein Ereignis 'onMouseUp' tritt auf, wenn der Benutzer nach dem Drücken einer Maustaste die Taste wieder loslässt. |
| onSelect | Ein Ereignis 'onSelect' tritt auf, wenn Text in einem Widget 'TextArea' oder 'TextField' ausgewählt wird. |
myButton Button { text = "Copy Input to Output", onClick ::= click };
Der Operator ::= hängt die Funktion mit dem Namen 'click' an die dynamische Feldgruppe an. Ein Effekt der Deklaration des Widgets besteht darin, dass unverzüglich eine Gruppe von ereignisbezogenen Feldgruppen verfügbar wird, wobei jede Feldgruppe nach einem Ereignis benannt ist.
myButton Button { text = "Start", onClick ::= click, onClick ::= function02 };
myButton.onClick ::= function03;
In diesem Beispiel bewirkt jetzt ein Klick des Benutzers den Aufruf der Funktion 'click', dann der Funktion 'function02' und schließlich der Funktion 'function03'.
Ereignisdatensatz
- ch INT
- Der ASCII-Code für den Tastenanschlag (sofern zutreffend), der das Ereignis ausgelöst hat.
- x INT
- Die X-Koordinate (in Pixeln) relativ zur linken Seite eines bestimmten Widgets. Beispiel: Wenn der Benutzer genau auf die Mitte einer Schaltfläche von 10 x 10 Pixeln klickt, hat x den Wert 5.
- y INT
- Die Y-Koordinate (in Pixeln) relativ zur oberen Seite eines bestimmten Widgets. Beispiel: Wenn der Benutzer genau auf die Mitte einer Schaltfläche von 10 x 10 Pixeln klickt, hat y den Wert 5.
- clientX INT
- Die X-Koordinate (in Pixeln) des Mauszeigers relativ zur linken Seite des Browserfensters. Beispiel: Wenn zwei Schaltflächen von jeweils 10 x 10 Pixeln nebeneinander oben links im Browserfenster vorhanden sind und der Benutzer genau auf die Mitte der zweiten Schaltfläche klickt, hat x den Wert 15.
- clientY INT
- Die Y-Koordinate (in Pixeln) des Mauszeigers relativ zur oberen Seite des Browserfensters. Beispiel: Wenn zwei Schaltflächen von jeweils 10 x 10 Pixeln nebeneinander oben links im Browserfenster vorhanden sind und der Benutzer genau auf die Mitte der zweiten Schaltfläche klickt, hat y den Wert 5.
- screenX INT
- Die X-Koordinate (in Pixeln) des Mauszeigers relativ zur linken Seite des Bildschirms. Der Wert variiert abhängig von der Anzeigeauflösung der Workstation.
- screenY INT
- Die Y-Koordinate (in Pixeln) des Mauszeigers relativ zur oberen Seite des Bildschirms. Der Wert variiert abhängig von der Anzeigeauflösung der Workstation.
- widget ANY
- Das Widget, an das das Ereignis angehängt wird.
- mousebutton INT
- Eine Zahl, die angibt, welche Maustaste gedrückt wurde.
- preventDefault()
- Verhindert, dass der Browser ein Standardverhalten ausführt. Beispiel: Es soll vielleicht das typische
Ergebnis eines Klicks des Benutzers auf einen Hypertext-Link vermieden werden. Im folgenden Entwurf wird der
Benutzerklick nur an den Browser übergeben, wenn eine angegebene Bedingung zutrifft:
hLink HyperLink { text = "www.ibm.com", href = "http://www.ibm.com", onClick ::= handleClickLink }; function handleClickLink(e Event in) // Zugriff nur für Personal mit einem explizit definierten Status zulassen if (...) return; end e.preventDefault(); end - stopPropagation()
- Wird von Rich-UI-Ereignisdefinitionen verwendet, um ein Verhalten zu bewirken, das im Abschnitt “Ereignisweitergabe” beschrieben wird.
Ereignisweitergabe
Wenn ein Widget in einem Container keine Gruppe von Ereignishandlern eines bestimmten Typs hat, wird das Ereignis für den Container verfügbar gemacht. Wenn sich zum Beispiel eine Schaltfläche (Button) in einem Feld (Box) mit dem Namen B befindet und die Schaltfläche ein onClick-Ereignis nicht verarbeitet, wird das Ereignis für B verfügbar gemacht. Dieses Verhalten wird als Ereignisweitergabe bezeichnet und erstreckt sich auf Container von Containern bis zu einer beliebigen Ebene in der Containerhierarchie. Wenn sich B beispielsweise selbst in einem Feld (Box) mit dem Namen A befindet und weder die Schaltfläche noch das Feld B das onClick-Ereignis verarbeiten, wird das Ereignis für A verfügbar gemacht.
Wenn ein Ereignis durch ein Widget auf einer beliebigen Ebene in der Containerhierarchie verarbeitet wurde, wird das Ereignis nicht mehr an ein einbettendes Widget weitergegeben.
Angepasste Ereignistypen
Rich-UI stellt eine Methode bereit, mit der Ereignistypen definiert werden können, die für ein bestimmtes Unternehmen spezifisch sind. Details finden Sie im Abschnitt “Rich-UI-Widgetgruppe erweitern”, und zwar insbesondere im Abschnitt zur Eigenschaft @VEEvent.