Direkte und indirekte Benutzung von selection

Von Jürgen Schell. | 9 April, 2008 - 10:24
Beschreibung:

In folgendem Script-Fragment

tell application "RagTime 6.5"
     set Auswahl to selection of window 1
     -- weiterer Script-Code
end tell

ist es im “weiteren Script-Code� nicht immer dasselbe, ob “selection� benutzt wird oder die Variable “Auswahl�. “selection� greift direkt auf ein RagTime-Objekt zu. Beim Zuweisen der Variablen wird das Objekt in eine Referenz aufgelöst und diese im Script abgelegt. Der Zugriff über “Auswahl� ist indirekter. In den meisten Fällen ist das Resultat bei beiden Zugriffen identisch. Im Abschnitt über die Ausrichtung von Bildern gab es einen Fall, der zu verschiedenen Resultaten führt.

Betrachten wir den Fall etwas detailierter: Angenommen war ein Dokument mit einem Bild. Das Bild ist in zwei Containern installiert. Der Anwender hat das Bild in einem der Container ausgewählt.

Script-Variante 1:

tell application "RagTime 6"
     align picture selection of window 1 horizontally at left side
end tell

Script-Variante 2:

tell application "RagTime 6.5"
     set Auswahl to selection of window 1
     align picture Auswahl horizontally at left side
end tell

In der ersten Variante wird das Bild nur in dem Container nach links ausgerichtet, in dem es ausgewählt ist. In der zweiten Variante wird es in allen Containern ausgerichtet. In der “set Auswahl...�-Zeile wird selection in einen Bezug der Form “picture "Bild 1" of document id 1� aufgelöst (das Bild heißt bei Ihnen ggf. anders). Die “align picture�-Anweisung wird dann an diese Bildkomponente geschickt. Diese Anweisung richtet das Bild an allen Stellen aus, an denen es installiert ist.

Dieser Text würde sehr lang werden, wenn wir alle Fälle behandelten, in denen sich die beiden Formen in der Wirkung gleichen und in welchen nicht. Für die eigene Arbeit mit dem selection-Objekt sollte nur klar sein: Technisch sind die beiden Zugriffsformen immer verschieden. Wenn also im konkreten Fall die eine das falsche tut, probiert man die andere.

Im Regelfall ist der direkte Zugriff auf selection in der Wirkung dichter am Aufruf einer Anweisung in der RagTime-Benutzungsoberfläche.