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.

Tabelle 1. Ereignisse
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.
Im folgenden Syntaxbeispiel wird ein Widget 'Button' deklariert und die Funktion mit dem Namen 'click' wird aufgerufen, wenn der Benutzer auf das Widget klickt:
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.

Wenn Sie mehrere Ereignishandler für ein bestimmtes Ereignis angeben, ist die Ausführungsreihenfolge der Ereignishandler die Reihenfolge der Elemente in der Feldgruppe. Das folgende Beispiel zeigt die entsprechende Syntax:
myButton Button { text = "Start", onClick ::= click, onClick ::= function02 };
Sie können außerdem den Operator ::= in Ihrem Code verwenden, um der dynamischen Feldgruppe Ereignishandler hinzuzufügen. Beispiel:
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

Jeder Ereignishandler empfängt einen Datensatz, der Details zu dem Ereignis enthält. Der Ereignisdatensatz hat den Typ 'Event' und enthält die folgenden Felder:
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.
Der Datensatz vom Typ 'Event' enthält außerdem die folgenden Funktionen, die alle keine Parameter haben:
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.


Feedback