30.12.2012 Aufrufe

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

202<br />

}<br />

Programmierung graphischer Benutzerschnittstellen mit <strong>Tcl</strong>/<strong>Tk</strong><br />

$win.cal create text [expr $x0+4] [expr $y0+2] \<br />

-anchor nw -text "$day" -fill $fg -font $font<br />

$win.cal create image [expr $x1-2] [expr $y1-2] \<br />

-anchor se -tags [list $date-image]<br />

...<br />

}<br />

...<br />

Wir übergehen die Details dieser Routine.<br />

9.6.2 Sensoren und gebundene Kommandos<br />

Viele Anwendungen haben sog. hot spots, d. h. Bereiche von Fenstern die<br />

man anklicken und ggf. selektieren kann. In unserem Beispiel will man z.<br />

B. einen Tag auswählen und sich die eingetragenen Termine anzeigen lassen.<br />

Dazu könnte man die linke Maustaste an das Hintergrundrechteck für<br />

den Tag, seine Nummer und sein Icon binden. Man könne auch alle drei<br />

Items mit der selben Marke (tag) versehen und an<br />

dieses Tag binden.<br />

Einfacher ist es aber manchmal, über gewisse Bereiche ein unsichtbares<br />

Item zu legen und an dieses das Ereignis zu binden. Unsichtbare<br />

Rechtecke lassen sich mit "" als Angabe für Rand- und Füllfarbe leicht<br />

erzeugen. Man sieht es zwar nicht auf dem Bildschirm, es reagiert aber<br />

durchaus auf Ereignisse. H+McL sprechen dann von einem Sensor.<br />

In unserem Beispiel ließe sich so ein Sensor in der redraw-Routine<br />

innerhalb der foreach-Schleife mittels folgendem create und bind<br />

einbauen.<br />

$win.cal create rectangle $x0 $y0 $x1 $y1 \<br />

-outline "" -fill "" \<br />

-tags [list $date-sensor all-sensor]<br />

$win.cal bind $date-sensor \<br />

[list calendar_select $win $date]

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!