Gestaltungsregeln sind Aktionen, die mit Rahmen und Textplatzhaltern verbunden werden können und automatisch in festgelegten Situationen wie nach dem Laden eines Platzhalters ausgeführt werden. Mit Bedingungen kann die Ausführung zusätzlich gesteuert werden. Rahmen können beliebig viele Gestaltungsregeln haben und jede Regel und Bedingung kann mit bis zu vier zusätzlichen Parametern versehen werden.
Ein fest Rahmen eingebauter Satz an Regeln und Bedingungen unterstützt die gebräuchlichsten Anforderungen. Mit eigenen Aktionen kann der Funktionsumfang der Regeln und Bedingungen beliebig erweitert werden.
Gestaltungsregeln können in unterschiedlichen Situationen ausgeführt werden.
Textgestaltungsregeln werden nur beim Laden der Platzhalter (Situation ) ausgeführt. Aktivierungen in anderen Situationen werden ignoriert.
Typ | Beschreibung | |
Nach Neuanlage |
![]() |
Die Regeln wird immer dann ausgeführt, wenn ein Rahmen aus einem Template neu angelegt wurde und geladen ist. Wurde der Rahmen über ein Skript z.B. mit ducument::place_items eingefügt, wird die Regel auch dann ausgeführt, wenn der Parameter autoload 0 ist und also noch nicht geladen ist. Sollen die Regeln nach dem Laden noch einmal ausgeführt werden, muss das im Skript mit itemlist::apply_layout_rules gemacht werden. Achtung : Die Regeln werden nach den <--Regeln ausgeführt. Bei Copy/Paste, Drag/Alt-Drop von Rahmen werden die Regeln nicht ausgeführt! Beim normalen Erzeugen neuer Rahmen könne die Regeln natürlich nicht ausgeführt werden - in diesen Rahmen ist ja noch gar keine Regel hinterlegt. |
Nach Laden |
![]() |
Nach dem Laden der Platzhalter eines Rahmens. Der Rahmen selbst muss keinen Platzhalter haben. InDesign®-Gruppen, Statusobjekte und Pushbuttons führen die Regeln nicht aus. Es wird aber in die Unterrahmen dieser Objekte "eingetaucht". |
Bei Reorganisationen |
![]() |
Die Regel wird immer dann aufgerufen, wenn ein Rahmen bei Seitenreorganisationen bearbeitet wurde. |
Geometrieänderungen |
![]() |
Die Regel wird jedesmal, wenn der Rahmen seine Gösse oder Position im Dokument ändert, ausgeführt. Sie sollten diesen Regeltyp sparsam verwenden. Interaktive Skriptbefehle wie showmessage, file::select_file usw. dürfen in diesen Regeln nicht verwendet werden! Beim Einfügen von Templates und beim Laden und Aufbau von Rahmen wird die Bearbeitung abgeschaltet. |
Nach Aufbau |
![]() |
Die Regel wird ausgeführt nachdem ein Produkt fertig geladen und aufgebaut wurde. Die Liste gFrames enthält alle Rahmen des Produktes zu dem gFrame gehört. Geometrieänderungen des Rahmens werden vom vom Produktaufbau nicht mehr registiert und können zum Überlauf der Seitenelmente führen! Achtung: Die Regeln werden nur vom Produktaufbau ausgeführt. Beim Einfügen einzelner Produkte z.B. mit Drag And Drop werden sie nicht ausgeführt. |
Beim Anlegen und Ändern von Templates werden alle Regeln abgeschaltet.
Fügen Sie ein Template direkt aus der Template-Palette ins Dokument ein, werden die Regeln ebenfalls vorübergehend abgeschaltet. Mit gehaltener Command-Taste können Sie die definierten Regeln trotzdem ausführen lassen.
[ab Comet 3.2.3] Die Reihenfolge, in der die Rahmen bearbeitet werden, wird durch die Rahmen-Kennung festgelegt. Beim Vergleich der Kennungen werden die UTF-8-Darstellungen der Zeichen zum Vergleich verwendet.
Rahmenkennungen werden in der Palette Template-Verhalten gesetzt.
Versionen vor 3.2.3 verwenden als Rahmenreihenfolge die UIDs der Rahmens.
[Ab v3.2.3 R2410] Die Ausführung von Gestaltungsregeln kann von Bedingungen abhängig gemacht werden. Neben einer Reihe von Standardbedingungen können Sie auch hier eigene Bedingungen erstellen. Die Tests verwenden jeweils genau eine Bedingung. Bedingungen können einen ELSE-Zweig haben und beliebig tief geschachtelt werden. Bedingungen können nicht negiert oder mit 'Und' oder 'Oder' verknüpft werden. Die entsprechenden Konstruktionen können aber einfach umformuliert werden:
Eine Regel R soll ausgeführt werden, wenn die Bedingung A nicht erfüllt ist.
Führen Sie in diesem Fall die Regel im else-Zweig aus:
if A
else
R
end
Die Regel R soll ausgeführt werden, wenn die Bedingungen A und B erfüllt sind.
Setzen Sie die zweite Bedingung als Unterbedingung in die erste:
if A
if B
R
end
end
Die Regel R soll ausgeführt werden, wenn entweder die Bedingung A oder die Bedingung B (oder beide) erfüllt sind.
Die naheliegende Lösung, zwei if-Anweisungen hintereinander zu machen, einmal für A und einmal für B, hat einen kleinen Schönheitsfehler : Wenn A und B beide erfüllt sind, wird R zweimal ausgeführt. Verwenden Sie in diesem Fall besser folgende Konstruktion:
if A
R
else
if B
R
end
end
Der Ausführungsstatus von Bedingungen wird automatisch aus den Statusfeldern der darunterliegenden Regeln berechnet. Könnte mindestens eine der Regeln ausgeführt werden, wird der entsprechende Status aktiviert. Der Ausführstatus von Bedingungen kann nicht manuell gesetzt werden.
Einige Regeln sind fest eingebaut verfügbar. Hier eine Aufstellung aller Standard-Regeln für Rahmen:
Name | ID | Beschreibung |
⇨ Rahmen | ||
Rahmen anpassen | -22 |
Passe die Rahmengröße an den Inhalt an. Mehrzeilige Textrahmen werden in der Höhe angepasst. Alle anderen Rahmen werden in Höhe und Breite an ihren Inhalt angepasst. Im Gegensatz zur Methode "Rahmen anpassen" wird hier versucht, eine Vielzahl von InDesign®-Fehlern bei der Anpassung zu umgehen. Hier finden Sie ein Referenz-Dokument mit ausführlichen Beschreibungen und Tests. |
Rahmen anpassen (DEPRECATED) | -1 |
Passe die Rahmengröße an den Inhalt an. Mehrzeilige Textrahmen werden in der Höhe angepasst. Alle anderen Rahmen werden in Höhe und Breite an ihren Inhalt angepasst |
Rahmengröße setzen | -28 |
Setze die Breite und Höhe des Rahmens. Wenn für die Höhe ein negativer Wert angegeben wird, wird die ursprüngliche Hähe des Rahmens im Template verwendet. |
Proportionen erhalten | -9 |
Erhalten der Rahmenproportionen. Ändern sich beide Dimensionen, können Sie festlegen, welcher Wert (x oder y) als Basis der Berechnung verwendet werden soll. Als Basisproportion wird die Rahmengröße bei der letzten Änderung einer Rahmenregel verwendet. |
Rahmenproportionen wechseln | -14 |
Vertausche Höhe und Breite des Rahmens |
Rahmen ausrichten | -12 |
Ausrichten des Rahmens an einem anderen Rahmen der Cometgruppe. Der Rahmen muss dabei eine größere Kennung als der Bezugsrahmen haben. Wird die Regel auf einen Multirahmen für wiederholende Elemente angewendet, werden enthaltene Elemente automatisch mit verschoben (ab Version v4.2 R33656). Rahmenkennungen setzen Sie mit Hilfe der Palette Template-Verhalten. Zum Vergleich der Rahmenkennungen wird die UTF-8-Darstellung der Zeichen verwendet. |
Rahmen positionieren | -13 |
Verschiebe den Rahmen relativ zur Position eines anderen Rahmens der selben Cometgruppe. Der Rahmen muss dabei eine größere Kennung haben, als der Bezugrahmen. Wird die Regel auf einen Multirahmen für wiederholende Elemente angewendet, werden enthaltene Elemente automatisch mit verschoben (ab Version v4.2 R33656). Rahmenkennungen setzen Sie mit Hilfe der Palette Template-Verhalten. Zum Vergleich der Rahmenkennungen wird die UTF-8-Darstellung der Zeichen verwendet. |
Rahmengeometrie setzen | -27 |
Stellt zurvor geschriebene Rahmengeometrie wieder her und setzt den Rahmen auf die gespeicherten Informationen zurück. Die Einstellungen entsprechen folgenden Parametern von frame::apply_frame_info:
Siehe auch Frame Infos |
Unsichtbar/Sichtbar | -10 |
Mache den Rahmen unsichtbar/sichtbar. Unsichtbare Rahmen können mit frame::show oder in der Ebenenpalette wieder sichtbar gemacht werden. |
Auf Ebene verschieben | -4 |
Verschiebe den Rahmen auf die angegebene Ebene. Existiert die Ebene noch nicht, wird sie hinter der im zweiten Parameter angegebenen Ebene angelegt. Fehlt der erste Ebenenname, wird eine neue Ebene mit einem automatischen Namen generiert. Fehlt die zweite Angabe, werden neue Ebenen als vorderste Ebene angelegt. Zusätzlich können Sie festlegen, ob Ebenensperrungen ignoriert werden sollen oder nicht. Achtung: Werden Rahmen auf gesperrte Ebenen verschoben, kann sich dadurch die Dokumentauswahl ändern! [ab v4.3 R36020] Inlines und Rahmen aus InDesign®-Gruppen können nicht getrennt von ihrem Elternobjekt (Textrahmen resp. Gruppe) verschoben werden. Im vierten Parameter der Regel können Sie jetzt festlegen, ob in diesen Fällen das Elternobjekt ebenfalls verschoben werden soll. Bei gruppierten Rahmen werden dann alle Rahmen der Gruppe auf die angegebene Ebene verschoben. Bei Inlines wird der enthaltende Textrahmen verschoben. Ist der Textrahmen Teil einer InDesign®-Gruppe, werden auch alle Rahmen dieser Gruppe verschoben. |
Rahmen verknüpfen und laden | -21 |
Verknüpfe den Rahmen mit dem gleichen Objekt wie das in Parameter 1 ausgewählte Objekt. Die Regel ist sinnvoll, wenn ein Rahmen zur Ladezeit unsichtbar ist und deshalb im Dokument nicht ausgewählt werden kann. |
Ereignis senden | -15 |
Führe alle Regeln eines anderen Rahmens der Cometgruppe aus, die auf einen definierten Schlüssel abonniert sind. Mehr dazu siehe hier. |
Objektstil anwenden | -34 |
seit v4.3 R34796 Anwenden eines definierten Objektstiles des Dokumentes auf den Rahmen. |
⇨ Bilder | ||
Bildgrösse anpassen | -2 |
Skalierung des Bildes entsprechend der Rahmengröße. Wenn Sie keine Parameter angeben, werden die Bilder proportional skaliert. Hier finden Sie Testdateien für die Regel: layoutrule_fitimage_CS55.indd.zip , layoutrule_fitimage_CS6.indd.zip |
Bildplatzierung anpassen | -3 |
Anpassen der Bildposition entsprechend Rahmen- und Bildgrösse Hier finden Sie Testdateien für die Regel: layoutrule_fitimage_CS55.indd.zip , layoutrule_fitimage_CS6.indd.zip |
Rahmeneinpassungsoptionen anwenden | -30 |
Anwenden der InDesign®-Rahmeneinpassungsoptionen (Menü Objekt -> Anpassen -> Rahmeneinpassungsoptionen ...) |
Farbeinstellung des Bildes | -11 |
Farbeinstellungen für Bild setzen. Die Einstellungen entsprechen dem Dialog des Menüs Objekt -> Farbeinstellungen für Bild.... |
⇨ Texte | ||
Vertikale Textausrichtung | -5 |
Vertikale Ausrichtung des Textes setzen, vertikalen Keil anwenden. |
Text anpassen | -8 |
Skaliere den Text so, dass der Rahmen möglichst ausfüllt wird und kein Overset besteht. Wird der erste Parameter auf 'ja' gesetzt, werden Texte ohne Übersatz nicht verändert. |
Textrahmen-Höhe ändern | -29 |
Passe die Höhe eines Textrahmens an. Die Höhe kann entweder prozentual (z.B 120%) oder in Vielfachen der letzten Zeilenhöhe verändert werden. Ein negativer Prozentwert setzt den Rahmen auf seine Ursprungsgröße zurück. Als Werte sind ganze und Dezimalzahlen erlaubt. Als Dezimaltrenner sind '.' und ',' erlaubt. Prozentuale Rahmenhöhenänderungen werden auch für Grafikrahmen angewendet. |
⇨ Tabellen | ||
Tabellenbreite anpassen | -20 |
Anpassen der Tabellenbreite an die Rahmen- oder Textspaltenbreite. Eine oder alle Spalten der Tabelle werden in der Breite so verändert, daass die Tabelle bis an den rechten Rahmenrand reicht oder die aktuelle Spalte genau ausfüllt. Bei Tabellen, die breiter als der Rahmen sind, kann dabei in Tabellenzellen Textübersatz entstehen. |
Gleiche Spaltenbreiten | -25 |
Die Spalten des angegebenen Bereiches bekommen alle die gleiche Breite. Insgesamt sind die Spalten bei Rahmenanpassung (3. Parameter) so breit, dass die Tabelle genau den Rahmen oder die Textspalte ausfüllt, in dem sie beginnt. Ohne Rahmenanpassung wird die bisherige Summe der Breiten gleichmäßig verteilt. ACHTUNG: Bei verketteten Textrahmen wird im gesamten Text der Kette nach der Tabelle gesucht! Es wird immer die ERSTE gefundene Tabelle des Textes der Rahmenkette bearbeitet. Haben mehrere Rahmen der Kette diese Regel, wird die Regel mehrfach ausgeführt! |
Zeilenhöhe | -23 |
Ändern von Zeilenhöhen in der ERSTEN Tabelle des Textes. Sind minimale und maximale Höhe gleich, bekommt die Zeile genau die angegebene Höhe. Sonst kann InDesign® die Höhe im gegebenen Bereich anpassen. ACHTUNG: Bei verketteten Textrahmen wird im gesamten Text der Kette nach der Tabelle gesucht! Es wird immer die ERSTE gefundene Tabelle des Textes der Rahmenkette bearbeitet. Haben mehrere Rahmen der Kette diese Regel, wird die Regel mehrfach ausgeführt! |
Spaltenbreite | -24 |
Ändern von Spaltenbreiten in der ERSTEN Tabelle des Textes. ACHTUNG: Bei verketteten Textrahmen wird im gesamten Text der Kette nach der Tabelle gesucht! Es wird immer die ERSTE gefundene Tabelle des Textes der Rahmenkette bearbeitet. Haben mehrere Rahmen der Kette diese Regel, wird die Regel mehrfach ausgeführt! |
Textübersatz in Spalte entfernen | -33 |
[seit v4.2 R33680] Passe die Breite einer Spalte so an, dass keine Zelle der Spalte einen Textübersatz hat. Hat keine Zelle einen Textübersatz, kann die Spaltenbreite auch optimal verkleinert werden. ACHTUNG: Die Funktion kann nur für Tabellen angewendet werden, die im sichtbaren Bereich eines Textrahmens liegen. Tabellen im Textübersatz können nicht angepasst werden. |
Tabelle umbrechen | -19 |
Umbruch von Tabellen, die breiter als der Textrahmen sind. Überstehende Spalten werden dafür in neue Tabellenzellen kopiert |
Tabelle spiegeln | -31 |
Umkehren der Spaltenreihenfolge von 1, ..., n zu n, ..., 1. Hilfreich ür Tabellen in Texten, die von rechts nach links geschrieben werden. |
Zellstile aktualisieren | -26 |
Wendet alle Zellenstile erneut an und zwingt InDesign® zum Rendern der Tabellenzellen. |
⇨ Magnetabstände | ||
Magnet-Abstände aktualisieren | -6 |
Die Magneten, die von dem Rahmen ausgehen, werden aktualisiert. Gehen von diesen Rahmen weitere Magnete ab, werden auch diese aktualisiert, usw.. Es genügt, nur einen Rahmen einer Magnetgruppe auszuwählen. Magnetabstände werden nach dem Ausführen der Regel automatisch wiederhergestellt. |
⇨ Nachrichten | ||
Beep | -16 |
Warnton abspielen |
Nachricht zeigen | -17 |
Warnmeldung zeigen |
Logmeldung schreiben | -18 |
Nachricht ins Logfile schreiben |
Weitere Standardregeln können hinzukommen.
Die Tabelle beschreibt alle verfügbaren Standardbedingungen.
Name | ID | Beschreibung |
Bild gesetzt | -3 |
Hat der Rahmen ein Bild. Die Prüfung kann auch auf Datei- oder eingebettete Bilder eingeschränkt werden. |
Hochformat | -4 |
Ist der Rahmen im Hochformat. Die Bedingung kann auch verwendet werden, um zu testen, ob das Bild des Rahmen im Hochformat ist. |
Kantenvergleich | -6 |
Vergleichen Sie die Länge einer Seite mit der entsprechenden Seite eines anderen Rahmens der Cometgruppe. |
Größenvergleich | -7 |
Prüfe, ob der Rahmen breiter/höher/... ist, als ein anderer Rahmen der Cometgruppe. |
Auf Ebene | -8 |
Liegt der Rahmen auf einer der angegebenen Ebenen? Sie können bis zu vier Ebenennamen angeben. Die Namen können reguläre Ausdrücke (PCRE) sein. Anfang/Ende von Ebenennamen prüfen Mit '\AEbene' werden alle Ebenen akzeptiert, die mit 'Ebene' beginnen. Mit 'de_DE\Z' finden Sie alle Ebenen, die auf 'de_DE' enden. |
Rahmen-Etikett gesetzt | -9 |
Hat der Rahmen ein Rahmen-Etikett mit dem angegebenen Schlüssel-Wert-Paar? Rahmen-Etiketten können mit der Palette Comet Admin -> Rahmen-Etiketten verwaltet werden. Für die automatische Bearbeitung von Rahmen-Etiketten stehen die cScript-Funktionen frame::set_script_tag und frame::get_script_tag zur Verfügung. |
Rahmen ist leer | -10 |
[Seit v4.2 R33550] Ist der Rahmen leer? Textrahmen mit einem leeren Textplatzhalter werden ebenfalls als leer erkannt. Rahmen zum Anlegen wiederholender Elemente sind leer, wenn der Rahmen keine wiederholenden Elemente hat. Rahmen werden über ihre Kennung in der Cometgruppe identifiziert. Ist die Kennung leer, wird der Rahmen selbst überprüft. Mit dem Kontext-Menü 'Verhalten im Template' können Sie die Rahmenkennungen im Dokument sichtbar machen. Mit der Palette Comet Admin -> Template-Verhalten können Sie Kennungen bearbeiten. |
Textübersatz | -1 |
Hat der Text des Rahmens eine Übersatz? |
Letzter Textrahmen | -2 |
Ist der Rahmen der letzte oder einzige Rahmen einer Kette verlinkter Textrahmen? |
Ereignis ausführen | -5 |
Ein anderer Rahmen hat ein Ereignis und einen Schlüssel gesendet. In dieser Bedingung werden die Regeln definiert, die jetzt ausgeführt werden sollen. Mehr dazu siehe hier. |
Sonst | 0 |
Fügen Sie einen ELSE-Zweig in die Bedingung ein. |
Weitere Standardbedingungen können hinzukommen.
Genau wie Rahmen können auch Textplatzhalter mit Gestaltungsregeln versehen werden. Ein Satz Standardregeln ist in Ihren Plugins bereits implementiert. Die folgende Tabelle gibt eine Übersicht über die verfügbaren Standardregeln für Textplatzhalter.
Textgestaltungsregeln werden nur beim Laden der Platzhalter (Situation <-) ausgeführt. Aktivierungen in anderen Situationen werden ignoriert. Beachten Sie bitte, dass die Textgestaltungsregeln ausschließlich in Texten, die mit einem Platzhalter verknüpft sind, gesetzt werden können!
Name | ID | Beschreibung |
Zeichenstil setzen | -1 |
Einfache Textattribute setzen. |
Absatzstil setzen | -2 | |
Schrift und Schriftgröße | -3 | |
Schriftfarbe | -4 | |
Suchen und Ersetzen | -6 |
Suchen und Ersetzen innerhalb des Netto-Textes des Platzhalters. Es kann nach beliebigen regulären Ausdrücken gesucht werden. Auf die (geklammerten) Teile des regulären Ausdruckes kann mit /1, /2, ... im Ersetzen-String zugegriffen werden (Achtung : Im Gegensatz zur Verwendung in cScript wird hier der Slash / erwartet, nicht der Backslash \.) Zur Eingabe von Backslashes (\) können Sie den Bezeichner '#B_' verwenden. [ab v3.3.1 R4014] Die Auswahl des Dialektes für reguläre Ausdrücke erfolgt über einen Präfix vor dem Suchen-String:
Beispiel 1: Vertausche den ersten (oder alle) Nummernblöcke der Form 123-456 zu 456-123: Suchen : ([0-9]+)[-]([0-9]+) Beispiel 2: Verwendung eines Look-Behinds. Suche alle Hallo Name, vor denen eine Zahl steht und setze den Namen in Großbuchstaben. Suchen : (?<=[0-9])((Hallo) (#BS_p{L}*)) Beispiel 3 : Ersetze alle Absatztrenner durch Soft-Returns. Achten Sie hier darauf, dass der unformatierte Platzhalter-Text Absatztrenner als \r enthält. Suchen : #B_r Beispiel 4: Umgekehrt können Sie natürlich auch Soft-Returns durch Absatztrenner ersetzen: Suchen : #B_n |
Weitere Standardregeln können hinzukommen.
[ab v3.3.1 R3355] Die folgende Tabelle zeigt alle Standard-Bedingungen für Textregeln.
Name | ID | Beschreibung |
leer | -1 |
Enthält der Platzhalter überhaupt Text? Bemerkung : "Leere" Platzhalter bestehen in Wirklichkeit aus genau einem unsichtbaren, dimensionslosen Zeichen. Die Bedingung prüft, ob ein Platzhalter genau dieses Zeichen (und sonst nichts) enthält. |
Zahl | -2 |
Zeigt der Platzhalter eine Zahl an. Als Dezimaltrenner sind Punkt und Komma erlaubt. Optional kann im ersten Parameter des Tests eine Einheit (z.B. €) für die Zahl angegeben werden. Dann muss die Zahl die angegebene Einheit in genau dieser Schreibweise haben. Zwischen Zahl und Einheit dürfen beliebig viele Whitespaces stehen. |
gleich | -3 |
Testen eines Platzhalters gegen die bis zu vier Parameter der Bedingung. Leere Parameter werden ignoriert. Zum Vergleich werden jeweils die Netto-Werte des Platzhalter-Textes verwendet. |
Enthält | -6 |
Enthält der Platzhaltertext einen gegebenen Text? Es kann nach beliebigen regulären Ausdrücken gesucht werden. Es kann zudem unterschieden werden, ob sich der Suchtext am Anfang oder an beliebiger Stelle im Platzhaltertext befindet. Gesucht wird jeweils auf dem Netto-Text. [ab v3.3.1 R4014] Die Auswahl des Dialektes für reguläre Ausdrücke erfolgt über einen Präfix vor dem Suchen-String:
Zur Eingabe von Backslashes (\) können Sie den Bezeichner '#BS_' verwenden. |
Sonst | 0 |
Fügen Sie einen ELSE-Zweig in die Bedingung ein. |
Weitere Standardregeln können hinzukommen.
Sie können jeweils bis zu 200 eigene Regeln für Rahmen und Textplatzhalter definieren. Die Regeln werden in actions.xml bzw. der Tabelle actions mit den folgenden ClassIDs definiert:
ClassID 36 : Rahmenregeln
ClassID 51 : Regeln für Textplatzhalter
Die so definierten Regeln werden in der Reihenfolge ihrer Sequenznummer sequencenr an die Liste der Standardregeln angefügt. Eine ausführliche Beschreibung der actions-Attribute für Gestaltungsregeln finden Sie hier.
Die Skripte von Gestaltungsregeln können alle Skriptfunktionen verwenden. Beachten Sie aber bitte Folgendes:
Die Skripte sollten mit den folgenden Includes beginnen :
#include "internal/types.h"
#include "internal/text.h"
In allen Aufrufen von Gestaltungsregeln ist der aktuelle Rahmen wie üblich mit gFrame definiert. In Regeln, die nach dem Aufbau gerufen werden, ist zusätzlich die Liste gFrames (ItemList) definiert, die alle Rahmen des Aufbaus enthält.
Zusätzlich zu den allgemein gültigen globalen Variablen wie gFrame, gDocument, ... sind eine Reihe weiterer globaler Variablen definiert:
Name | Typ | Beschreibung |
gOrgFrameLeft |
float |
Original-Koordinaten (in Punkten) des Rahmens gFrame beim Setzen der Regel. Die Koordinaten werden bei jeder Änderung einer Regel oder Bedingung des Rahmens im Rahmen aktualisiert. Bei Textgestaltungsregeln sind die Werte jeweils 0.0. |
gOrgFrameTop |
||
gOrgFrameRight |
||
gOrgFrameBottom |
||
gFrameLeftBefore |
float |
Aktuelle Rahmen-Koordinaten vor Anwenden der Regel. Bei Textgestaltungsregeln sind die Werte jeweils 0.0. |
gFrameTopBefore | ||
gFrameRightBefore | ||
gFrameBottomBefore | ||
gStart | int |
Startposition und Länge des Platzhalters. Die Angaben sind nur bei Textgestaltungsregeln definiert. |
gLen | ||
gParam1 gParam2 gParam3 gParam4 |
char* |
Jedes Skript hat vier zusätzliche Paramater, deren Werte in der Palette definiert werden können : Die Werte werden am Rahmen pro Regel und Bedingung hinterlegt. Über die Konfiguration der Parameter siehe hier. Wenn die Parameter Zahlen enthalten, müssen diese Zahlen mit val bzw. fval aus dem String ermittelt werden. Die Parameterwerte dürfen im Skript geändert werden. Erlaubt ist eine Maximallänge von 5000 Zeichen. Siehe dazu auch die Funktion frame::change_rule_param |
gFrames |
ItemList |
Nur in Aufrufen von Regeln der Typen "Nach Laden" und "Nach Aufbau". Nach dem Laden enthält die Liste die Rahmen, die ebenfalls gerade geladen werden sollen (z.B. die Rahmen der aktuellen Dokumentauswahl, die Sie gerade laden.) Nach dem Aufbau enthält die Liste jeweils die Rahmen des eingefügten Templates. |
gWhen |
int |
[ab v3.2.3 R2410] In welcher Situation wurde die Regel aufgerufen? Einer der Werte 1, 2, 4, 8 oder 16, siehe hier. |
gSender |
ItemRef |
In der Regeln der Bedingung "Ereignis ausführen" enthält die Variable die Rahmenreferenz auf den aufrufenden Rahmen. Sonst ist der Inhalt der Referenz leer (item::getint (gSender) == 0). |
gKey |
char* |
In der Regeln der Bedingung "Ereignis ausführen" enthält die Variable den vom Sender vergebenen Schlüssel. |
gSenderData1 |
char* |
Im Sender eines Ereignisses können neben dem Schlüssel zwei weitere Werte angegeben werden. Diese Parameter werden in den Variablen an die ausführenden Regeln weitergegeben und können dort verwendet werden. |
gSenderData2 |
||
gIsInBuild |
int |
[ab v3.3 R2731] In welchem Zusammenhang wird die Regel aufgerufen?
|
gCurrentPageTemplate |
int |
[ab v4.1 R23901] Wenn gIsInBuild == 1, dann enthalten die Variablen die ID des aktuellen Seitentemplates und die (1-basierte) Sequenznummer des aktuellen Seitenelementes. |
gCurrentSeq |
In Textplatzhalterregeln sind außer gParam1-4 alle o.g. Variablen mit den Werten 0/"" definiert.
Im Gegensatz zu allen anderen globalen Variablen dürfen die Inhalte von gParam1-4 im Skript geändert werden. Der String darf dabei aber nicht länger als 5000 Zeichen werden. Änderungen an den Variablen gelten nur innerhalb der ausführenden Regel. Mit Hilfe der Funktion
können Parameterwerte von Regeln und Bedingungen auch dauerhaft geändert werden. Die Funktion kann nur die Parameter der gerade ausgeführten Regel oder Bedingung ändern.
Sie haben mit dieser Funktion ein recht mächtiges Werkzeug zum Hinterlegen dynamischer Informationen im Dokument.
Jedesmal, wenn die Regel ausgeführt wird, wird der Parameter 2 der Regel um eins hochgezählt. Der Parameter 2 muss mit einer Zahl initialisiert sein.
int main () { frame::change_rule_param (2, itoa (val (gParam2)+1));
return 0; }
Die Tabelle beschreibt, wie die Regeln konfiguriert werden können. Die eigentliche Implementietung der Regel machen Sie entweder über Ison (PubServer) oder mit ALT-Klick der Regel direkt im InDesign®.
name = Name
| Submenu^Name
| Submenu^Submenu^Name
...
| Name,,Shortcut
| Submenu^Name,,Shortcut
| Submenu^Submenu^Name,,Shortcut
...
Der Name der Gestaltungsregel wird im Attribut name angegeben. Mit einem ^ getrennten Pfad vor dem Namen kann die Regel in Untermenüs des Fly-Out-Menüs der Palette eingeordnet werden. Denken Sie aber daran, dass zu lange Pfade die Benutzerfreundllichkeit eher beeinträchtigen.
Mit den folgenden Pfadangaben können Rahmenregeln in die Untermenüs der Standardregeln für Rahmen eingefügt werden:
Der Name und alle Pfadteile werden mit Hilfe der aktuell verfügbaren Übersetzungen automatisch in die Sprache des verwendeten InDesign® übersetzt.
Mit einer durch ,, (Komma Komma) getrennten Shortcut-Definition können Sie den Menüeintrag mit einer Befehlstasten-Kombination versehen. Informationen zur Definition von Tastaturkombinationen finden Sie hier.
Hier die Definition einer Regel kRemoveFrame, die im Flyout-Menu Rahmen -> A -> B gezeigt werden soll. Mit Shift+Ctrl+Y kann die Regel dem aktuell ausgewählten Rahmen hinzugefügt werden. Für den Schlüssel kRemoveFrame sollte eine Übersetzung definiert werden.
kLayoutRulesFrames^A^B^kRemoveFrame,,Shift+Ctrl+Y
Der Typ einer Regel wird über die ClassID der Aktion bestimmt:
Eigene Regeln werden im Flyout der Palette immer hinter den Standardregeln einsortiert. Mit dem Attribut sequencenr der Aktion können Sie dann die weitere Reihenfolge festlegen. Bei fehlenden oder gleichen Sequenznummern ist die Reihenfolge zufällig.
Verhalten = Default##AllowedFor##Tooltip
Default = 0 - 47
AllowedFor = 0 - 47
Aktivierung und Beschreibung der Regel werden im Attribut inputdocumentation der Aktion festgelegt. Die Angaben erfolgen in einem dreiteiligen ##-getrennten Text.
Folgende Werte sind den Situationen zur Ausführung einer Regel zugeordnet :
Icon | Wert | Situation |
![]() |
2 | Laden (Der Rahmen muss dabei keinen Platzhalter haben) |
![]() |
1 | Anlage (aus einem Template) |
![]() |
32 | Produktaufbau |
![]() |
4 | bei Reorganisationen |
![]() |
8 | Geometrieänderungen |
Im ersten Teil definieren Sie die Situationen, die bei Neuanlage der Regel automatisch aktiviert werden sollen. Die Angabe ist eine Summe der zu aktivierenden Situationen. So bedeutet 2, dass die Regel nur fürs Laden aktiviert wird, mit 3 wird die Regel für Neuanlage und Laden aktiviert, usw.. Mit 0 oder leer bleiben alle Situationen deaktivert.
Im zweiten Teil legen Sie fest, welche Situationen aktiviert werden können. Die Zahl ist eine Summe der erlaubten Situationen. Mit 0 erlauben Sie nichts, mit 39 (= 32 + 1 + 2 + 4) erlauben Sie alles außer Geometrieänderungen, mit 47 auch Geometrieänderungen. Fehlt die Angabe oder ist leer, werden alle Situationen erlaubt.
Defaults, die nicht in den erlaubten Situationen enthalten sind, werden automatisch erlaubt. Die Angabe 1##0##Hilfetext aktiviert bei Hinzufügen der Regel automatiasch dieNeuanlage. Sollte diese Situation aber an der Regel (etwa zu Testzwecken) abgeschaltet worden sein, kann sie auch wieder aktiviert werden - alle anderen Situationen aber nicht.
Die Regel soll beim Hinzufügen für Neuanlage aktivert sein und darf zusätzlich beim Laden aktiviert werden.
1##2##My_Help
Fehlende oder leere Angaben erzeugen ein leeres Textfeld mit dem Label Unbenutzt. Unabhängig davon können auch diese Felder mit Inhalt versehen und ausgewertet werden. Im Interesse einer guten Benutzerführung sollte Sie diese Situationen aber vermeiden.
Param = Label
| Label////Tooltip
In der einfachsten Form geben Sie einfach den Parameternamen an. Es wird ein leeres Textfeld mit dem angegebenen Namen angelegt. Beachten Sie aber bitte, dass die Beschriftung nicht zu lang wird!
Optional und durch //// getrennt kann hinter dem Label ein Hilfetext zur Beschreibung des Parameters folgen. Beachten Sie bitte, dass Hilfetexte nur bis zu 255 Zeichen angezeigt werden. Hilfetexte dürfen keine Zeilentrenner enthalten! Sollten Zeilentrenner benötigt werden, müssen diese mit <br> oder <br/> maskiert werden.
Label und Tooltip werden mit Hilfe der aktuell verfügbaren Übersetzungen automatisch in die Sprache des verwendeten InDesign® übersetzt.
Der zweite Parameter erwartet die Angabe einer RGB-Farbe
##Farbe////RGB-Werte der Farbe jeweils im Bereich 0-255, z.B. 255 128 0####
Param = Label^^Default
| Label^^Default////Tooltip
Der Parameter wird als benanntes Textfeld mit dem Namen Label dargestellt und bei Neuanlage mit dem Wert Default befüllt.
Optional und durch //// getrennt kann am Ende der Definition ein Hilfetext zur Beschreibung des Parameters folgen. Beachten Sie bitte, dass Hilfetexte nur bis zu 255 Zeichen angezeigt werden. Hilfetexte dürfen keine Zeilentrenner enthalten! Sollten Zeilentrenner benötigt werden, müssen diese mit <br> oder <br/> maskiert werden.
Label und Tooltip werden mit Hilfe der aktuell verfügbaren Übersetzungen automatisch in die Sprache des verwendeten InDesign® übersetzt.
Der zweite Parameter erwartet die Angabe einer RGB-Farbe, Schwarz ist der Default
##Farbe^^0 0 0////RGB-Werte der Farbe jeweils im Bereich 0-255, z.B. 255 128 0####
Param = Label
Entry
Entry
...
| Label////Tooltip
Entry
Entry
...
Entry = [!]Label
| [!]Key//Label
Parameter haben häufig eine definierte Liste unterstützter Werte. Für diese Fälle können die Werte als benannte Dropdowns dargestellt werden. Wie bei den benannten Textfeldern beginnt die Definition mit dem Namen Label des Dropdowns. Optional und durch //// getrennt kann nach dem Namen ein Hilfetext zur Beschreibung des Parameters folgen. Beachten Sie bitte, dass Hilfetexte nur bis zu 255 Zeichen angezeigt werden. Hilfetexte dürfen keine Zeilentrenner enthalten! Sollten Zeilentrenner benötigt werden, müssen diese mit <br> oder <br/> maskiert werden.
Label und Tooltip werden mit Hilfe der aktuell verfügbaren Übersetzungen automatisch in die Sprache des verwendeten InDesign® übersetzt.
Auf Label und Tooltip folgt eine zeilengetrennte beliebig lange Liste der Einträge, die im Dropdown gezeigt werden sollen. Als Zeilentrenner sind die folgenden Zeichen erlaubt:
\n
\n\r
\r



In den Eingabefeldern der Workbench können leider keine Zeilentrenner eingegeben werden, bzw. werden beim Sichern automatisch wieder entfernt. Sie können als Trenner der einzelnen Werte von Popupmenüs daher auch die Zeichenfolge :I: (Doppelpunkt, großes i, Doppelpunkt) verwenden.
Untermenüs in Dropdowns werden von InDesign® leider nicht unterstützt - Sie können hier also nur flache Droddowns anlegen.
In der einfachen Schreibweise geben Sie hier den Text an, der im Eintrag gezeigt werden soll. Nur die Whitespaces am Anfang und Ende werden entfernt. Der Text wird nicht übersetzt und so, wie er im Dropdown steht, auch ins Dokument übernommen werden. Angaben in dieser Schreibweise sind in den folgenden Fällen nützlich:
Enthält der Listeneintrag einen sprachabhängigen Wert, empfehlen wir die etwas längere, aber deutlich hilfreichere Schreibweise Key//Label!
Für sprachabhängige Listeneinträge sollten Sie die etwas längere Schreibweise Key//Label verwenden. Whitespaces am Anfang und Ende werden vor der Verwendung entfernt.
Im Dropdown wird die Übersetzung von Label in die aktuelle InDesign®-Sprache eingetragen (vorausgesetzt natürlich, dass Sie diese Übersetzung definiert haben, was Sie mit der Palette Plug-ins -> Comet Admin -> Übersetzungen (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) aber leicht machen können.). Wird der Eintrag jedoch im Dropdown ausgewählt, wird nicht Label sondern Key ins Dokument übernommen. Ihre Gestaltungsregel muß also unabhängig von der verwendeten InDesign®-Sprache auch nur diesen Schlüssel auswerten. Damit haben Sie eine benutzerfreundliche Darstellung und sind trotzdem unabhängig von der InDesign®-Sprache.
Hinweis : Es ist durchaus erlaubt und sinnvoll, für Key und Label den gleichen Begriff zu verwenden. Aber auch dann gilt natürlich : Key ist der Wert, der (unverändert) ins Dokument übernommen wird und der im Skript der Gestaltungsregel verwendet wird. Und Label wird durch die Übersetzung geschickt und in der Anzeige der Palette verwendet.
Trenner im DropDown werden mit einem - (Minus) erzeugt. Trenner können nicht ausgewählt werden, werden also auch nie als Parameterwert übernommen werden.
Der Default-Eintrag des Dropdows, mit dem der Parameter beim Hinzufügen der Regel belegt wird, wird mit einem ! (Ausrufezeichen) am Anfang der Definition des Eintrages gekennzeichnet. Ist kein Default definiert, wird der erste Eintrag der Liste als Default verwendet. Sind mehrere Einträge mit einem ! markiert, wird der letzte gefundene Eintrag verwendet.
Eine Gestaltungsregel zum Anpassen von Rahmengrößen könnte etwa folgende Parameter haben:
Bei den allfälligen Übersetzungen können Sie zum Teil auf Standard-Übersetzungen zurückgreifen (im Text blau markiert), siehe hier. Für die rot hervorgehobenen Schlüssel müssen noch Übersetzungen angelegt werden. Dazu können Sie z.B. die Palette Plug-ins -> Comet Admin -> Übersetzungen (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) verwenden.
<outputdocumentation>k_DIRECTION////My_Rule1_Help h//k_WIDTH w//k_HEIGHT b//My_Both ##My_Value////My_Value_Help##My_Unit////My_Unit_Help mm !pt % ##k_PROPORTIONAL////My_Prop_Help y//k_YES n//k_NO </outputdocumentation>
Die Einträge der Popupmenüs können auch dynamisch geladen werden, wenn der jeweilige Dokument-Rahmen in der Palette Gestaltungsregeln gezeigt wird. Die Einträge der Popupmenüs können dabei über Standardfunktionen (z.B. alle verfügbaren Objektstile) geladen werden. Erfüllt keine der Standardfunktionen Ihre Wünsche, können Sie auch selbst ein Skript schreiben und das Popup damit füllen.
In der Werteliste des Parameters geben Sie dazu anstelle einzelner Werte das Schlüsselwort @LOADLIST gefolgt von der Funktion oder der ID Ihrer definierten Aktion an :
@LOADLIST Standardfunktion | ActionID [Defaulteintrag]
Das Popup enthält als Standard immer den Wert "Leer". Zwischen diesem Eintrag und den dynamischen Werten wird ein Trenner eingefügt. Es kann nur ein @LOADLIST-Eintrag pro Parameter angegeben werden.
Der zweite Parameter einer Gestaltungsregel kann als Wert eine existierenden Objektstile bekommen. Wurde noch kein Wert ausgewählt, wird Objektformat 1 als Standard ausgewählt.
<outputdocumentation>Variable Werte links !mitte rechts ##Stil @LOADLIST objstyles "Objektformat 1" ##[unbenutzt] ...
Die folgenden Standardlisten sind definiert. Sie werden einfach über ihren Namen (case sensitv) angesprochen. Nach dem Funktionsnamen kann eine Zahl oder ein String zur Definition des Defaulteintrages folgen.
Funktion | Defaultauswahl | Beschreibung |
colorprofiles |
String oder Index Fehlt die Angabe, wird der "Leer"-Eintrag des Menüs ausgewählt. Enthält der String Leerzeichen, muss er in Anführungszeichen gesetzt werden. Sie können die Auswahl auch über den Index setzen. Beachten Sie, dass dabei die ersten beiden Einträge ("Leer" und der Trenner) mitgezählt werden und dass die Zählung 0-basiert ist. Ihr eigentlicher erster Eintrag hat also den Index 2. |
Alle verfügbaren Farbprofile (siehe auch Standard-Menü Bearbeiten > Profile zuweisen...) |
imagecolorprofiles |
Farbprofile für ein Bild (siehe auch Standard-Menü Objekt > Farbeinstellung für Bild...). Die Liste hat nur bei Bildrahmen Einträge. |
|
pdfprofiles | Alle verfügbaren PDF-Vorgaben (siehe auch Standard-Menü Datei > Adobe PDF-Vorgaben...) | |
printprofiles | Alle verfügbaren Druckvorgaben (siehe auch Standard-Menü Datei > Druckvorgaben...) | |
parastyles | Alle im aktuellen Dokument definierten Absatzstile (siehe Palette Absatzformate) | |
charstyles | Alle im aktuellen Dokument definierten Zeichenstile (siehe Palette Zeichenformate) | |
objstyles | Alle im aktuellen Dokument definierten Objektstile (siehe Palette Objektformate) | |
tablestyles | Alle im aktuellen Dokument definierten Tabellenstile (siehe Palette Tabellenformate) | |
cellstyles | Alle im aktuellen Dokument definierten Tabellenzellenstile (siehe Palette Zellenformate) | |
framelabels | [ab v3.2.3 R2401] Alle unterschiedlichen Kennungen der Rahmen der Cometgruppe, zu der der Rahmen gehört. | |
templates |
[ab v3.3 R2850] Alle aktivierten und in der Produktrecherche sichtbaren Templates. Die Einträge haben jeweils die folgende Form : 1 | Name ID und '|' sind dabei durch einen Tabulator getrennt. |
|
swatches | [ab v3.3.1 R3211] Alle benannten Farbfelder des Dokumentes |
In dieser Regel werden alle Parameter dynamisch geladen:
<outputdocumentation>Schrift @LOADLIST fonts "Courier New" ##Absatzstil @LOADLIST parastyles 2 ##Zeichenstil @LOADLIST charstyles ##Tabellenstil @LOADLIST tablestyles 3 <outputdocumentation>
Zusätzlich zu den o.g. Standardlisten können auch eigene Listen für Parameter implementiert werden. Diese Skripte müssen die ClassID 44 haben. Sie werden jedesmal ausgeführt, wenn ein Rahmen in der Palette Gestaltungsregeln ausgewählt wird. Im Skript muss jeweils die hier definierte globale StringList gValues gefüllt werden. Folgende globale Variablen sind neben den allgemeinen globalen Variablen und gFrame definiert :
Name | Typ | Beschreibung |
gValues |
StringList |
Diese Werte sollen im Popup angezeigt werden. Sollen die Werte lokalisiert werden, müssen Sie das mit Hilfe der Funktion translate im Skript machen. |
gDefaultEntry | int* |
Index für den Defaulteintrag der Liste. Beachten Sie, dass dabei die ersten beiden Einträge ("Leer" und der Trenner) mitgezählt werden und dass die Zählung 0-basiert ist. Ihr eigentlicher erster Eintrag hat also den Index 2. |
gRuleID | int | ID der aufrufenden Regel |
gRuleName | char* | Name der aufrufenden Regel |
In dieser Regel werden die Werte für den ersten Parameter mit Hilfe der Aktion 20014 geladen:
<outputdocumentation>Werteliste @LOADLIST 20014 ##Unbenutzt##Unbenutzt##Unbenutzt <outputdocumentation>
Das ist ein gültiges Skript zum Laden einer dynamischen Werteliste:
int main () { stringlist::append (gValues, "aaa"); // index 2 stringlist::append (gValues, "bbb"); // index 3 stringlist::append (gValues, "ccc"); // index 4 stringlist::append (gValues, "-"); stringlist::append (gValues, "111"); stringlist::append (gValues, "222"); stringlist::append (gValues, "333"); *gDefaultEntry = 4; return 0; }
Ebenso wie eigene Regeln können auch eigene Bedingungen implementiert werden. Die Bedingungen werden ebenfalls in actions.xml bzw der Tabelle actions mit den folgenden ClassIDs definiert:
ClassID 45 : Bedingungen für Rahmenregeln
ClassID 52 : Bedingungen für Regeln von Textplatzhaltern
Es sind jeweils biz zu 200 eigene Bedingungen erlaubt.
Ob eine Bedingung erfüllt ist oder nicht, wird über den return-Wert der main-Funktion des Skriptes angegeben :
return | Beschreibung |
return 0; | Bedingung nicht erfüllt |
sonst | Bedingung erfüllt |
Bedingungen für Textplatzhalter, die die Variable gNewValue nicht enthalten, werden bei Aufrufen des Aufgabenmanagements ignoriert und als Ablehnung (FALSE) betrachtet. Hier erfahren Sie mehr darüber, wie Sie gNewValue verwenden, damit das Aufgabenmanagement Ihre Platzhalter richtig auswerten kann.
Die Bedingung ist erfüllt, wenn im Parameter 1 der IF-Anweisung eine Zahl ungleich 0 steht. Ist der Parameter 1 gleich 0 (oder ein String) ist die Bedingung nicht erfüllt.
int main () { return val (gParam1); }
Bedingungen verfügen über die gleichen Umgebungsvariablen wie die Regeln, siehe hier.
Die Konfiguration inklusive der Parameterlisten für Bedingungs-Parameter und ihre Beschreibung wird auf die gleiche Weise wie in den Regeln gemacht, siehe hier. Die Angaben zur Ausführung der Bedingung in inputdocumentation müssen angegeben werden, werden aber ignoriert.
Gestaltungsregeln werden im jeweiligen Rahmen- oder Textplatzhalter abgelegt. Das geschieht automatisch beim Bearbeiten der Gestaltungsregeln mit Hilfe der Palette Gestaltungsregeln. Mit Hilfe Befehle placeholder::sget_value und placeholder::change_tags können die Regeln aber auch über cScript bearbeitet werden. Verwenden Sie dazu den Slot-Namen "LayoutRules".
Regeln und Bedingungen werden gleich formatiert jeweils im Format
int1 int2 'param1'\t'param2'\t'param3'\t'param4'
Mehrere Regeln/Bedingungen werden durch Leerzeichen getrennt. Die folgende Tabelle beschreibt die Formatierung einer Regel/Bedingung:
Beschreibung | |
int1 | ID der Regel oder Bedingung. Die IDs der Standardregeln und Bedingungen finden Sie hier. |
int2 |
Bedingungen verwenden jeweils die negativen Werte. Achten Sie darauf, dass Bedingungen alle Ausführzeitpunkte der inneren Regeln bekommen! -2147483647 beschreibt die END-Regel einer Bedingung. |
param1-4 |
Parameter 1-4 der Regel. Die Parameter werden in einfache Anführungszeichen eingeschloßen und TAB-getrennt. Beachten Sie bitte, dass auch bei Wertelisten (DropDowns) der Textinhalt bzw. der Schlüssel des ausgewählten Eintrages und nicht der Index gesichert wird. |
Hier der String für die im Bild gezeigten Regeln. Zur besseren Lesbarkeit sind die einzelnen Regeln zeilengetrennt.
-2 10 'ja' 'nein' '' ''
-3 10 'links' 'oben' '' ''
-3 -14 'Datei' '' '' ''
-18 10 't1' '' '' ''
-4 6 '' '' 'nein' ''
0 -2147483647 '' '' '' ''
Mit frame::apply_layout_rules und itemlist::apply_layout_rules können die Gestaltungsregeln anderer Rahmen schon seit v3.1 R1550 (Sept. 2009 ausgeführt werden. Das hat zwei Nachteile : Man kann nur alle Regeln der Zielrahmen ausführen - Auswahlen von Rahmen gehen nicht. Und zweitens : Man muss die Regeln selber schreiben.
Mit den sog. Ereignissen können gezielt Regeln anderer Rahmen der gleichen Cometgruppe ausgeführt werden. Zwei Schritte sind dafür nötig :
Der Sender gibt dabei an, welcher Rahmen der Cometgruppe (identifiziert über dessen Kennung) gemeint ist und liefert einen Schlüssel (irgendein beliebiger Text). Der Empfänger prüft den Schlüssel und führt dann alle Regeln aus, die zur Bedingung gehören. Es ist erlaubt, an dieser Stelle wieder ein Ereignis (auch mit dem gleichen Schlüssel und an den aufrufenden Rahmen) zu senden - es muss aber sichergestellt sein, dass irgendeine Art von Abbruchbedingung definiert ist (z.B. eine Prüfung auf Textübersatz).
Damit der Empfänger die Regeln ausführen kann, müssen die Regeln in Sender und Empfänger für die gleichen Ausführungssituationen freigegeben sein.
Die Rahmen mit den Kennungen A und B gehören zur selben Comet-Gruppe :
A feuert nach jeder Positionsänderung ein "Send Event" mit dem Schlüssel Key 1 an den Rahmen B :
In B prüft "Ereignis ausführen", ob der Schlüssel stimmt und führt dann die Regel "Rahmen anpassen" aus.
Wird A jetzt um einen Pixel verschoben, wird die Größe von B angepasst.
[Seit v5.0 R37020] Beim Verlinken eines Fortsetzungsrahmens mit dem Textrahmen gleicher
Kennung im Vorgänger-Template werden die 'OnUpdate'-Regeln
des neu verlinkten Rahmen mit folgenden Sonderbedingungen ausgeführt:
#pragma LinkContinuationBeim 'normalen' Update, also wenn der Inhalt des ersten Rahmens (im Haupttemplate) geladen wird, werden diese Regeln ignoriert. In allen anderen Zusammenhängen werden mit #pragma LinkContinuation markierte Skripte wie 'normale' Skripte ausgeführt.