Die Möglichkeiten zum Einsatz von Ereignissen mit Tcl/Tk sind sehr vielseitig und flexibel [RT1999] [Har1997] [HM1998]. Aus diesem Grund läßt sich hier nur ein kleiner Überblick vermitteln.
Die Anbindung von Ereignissen an
Objekte
auf dem Canvas funktioniert ähnlich der Anbindung von Ereignissen
an Elemente (engl.: ,,widgets``) mit dem Tk-Befehl
bind
.
An Objekte des Canvas können nur Ereignisse angebunden werden, die Maus oder Tastatur zugeordnet sind sowie virtuelle Ereignisse (engl.: ,,virtual events``).
Besondere Standardattribute (engl.: ,,tag``, Attribut) sind
current
und all
.
Bestimmte Ereignisse, z.B. das Betreten und Verlassen eines Objektes,
werden dadurch gesteuert, daß ein Objekt das aktuelle
(current
) Objekt wird. Ereignisse, die der Maus
zugeordnet sind, werden auf dieses Objekt bezogen. Ereignisse, die
der Tastatur zugeordnet sind, werden auf das Objekt bezogen, das
den Tastaturfokus (focus
)
hat, der z.B. mit der
focus
-Methode gesetzt werden kann.
Wird all
verwendet, bezieht sich die spezielle Bindung
auf alle erreichbaren Objekte, z.B. im Fenster mit einem angegebenen
Pfadnamen.
Ein virtuelles Ereignis kann nur durch ein reales Ereignis (Maus, Tastatur) ausgelöst werden, das hinter dem virtuellen Ereignis verborgen ist.
Treffen mehrere Bindungen auf ein bestimmtes Ereignis zu, so werden alle Bindungen ausgelöst. Die Reihenfolge der Auslösung von Ereignissen ist folgendermaßen.
Ein Ereignis, das an das Attribut all
gebunden ist,
wird als erstes ausgelöst. Danach werden Ereignisse ausgelöst,
die an je ein beliebiges Attribut gebunden sind und anschließend
Ereignisse, die sich auf die Identitätsnummer eines Objektes
( ID ) beziehen.
Sind mehrere Bindungen für ein bestimmtes Attribut vorhanden,
dann wird das Ereignis ausgelöst, das hinter der Bindung steht,
die am wenigsten allgemein ist.
Mit dem Befehl break
werden Sequenzen von Befehlen abgebrochen,
die über Bindungen zugewiesen sind.
Alle Bindungen an das Canvas Element
(engl.: ,,canvas widget``)
mit dem Befehl bind
werden nach möglichen passenden Bindungen an Objekte
ausgelöst.
Eine detailierte Übersicht der wichtigsten grundlegenden Funktionen ist in allen Basiswerken zu Tcl/Tk vorhanden ([RT1999] S. 57-70).
Als konkretes Beispiel für die Handhabung von Symbolismus und Ereignissen soll hier die Manipulation einer Eigenschaft eines Elementes des Canvas über ein Attribut gegeben werden (Abbildung 8.1):
nameofcanvas itemconfigure \ tag -option value \ [-option value ...] |
Abbildung 8.1: Quellentextbeispiel: Eigenschaften eines Elementes des Canvas über Attribute
Desweiteren ist die Anbindung von Ereignissen an solche Elemente (Abbildung 8.2) von besonderer Bedeutung. Auf diese Weise können z.B. Kommandos an Elemente mit bestimmtem Attribut gebunden werden.
nameofcanvas bind \ tag <action> { Tcl Skript } |
Abbildung 8.2: Quellentextbeispiel: Anbindung von Ereignissen an Attribute
Es können aber auch Aktionen an beliebige Lokationen auf einem Canvas gebunden werden (Abbildung 8.3).
bind nameofcanvas \ <action> { Tcl Skript } |
Abbildung 8.3: Quellentextbeispiel: Anbindung von Ereignissen an beliebige Lokationen
Für nameofcanvas
,
tag
,
<action>
und
Tcl Skript
müssen in diesem Beispiel
der Name des Canvas, das betreffende Attribut,
das gewünschte Ereignismuster und auszuführende
Tcl-Befehle eingesetzt werden.