Mit früheren XPress-Versionen galt die folgende Konstruktion als zuverlässig. --- tell document 1 of application "QuarkXPress 6.1" tell current box set pageNumber to page number of page 1 end tell end tell --- Das Resultat entspricht der Numerierung in der Seitenlayout-Palette.
Wenn die Box aber auf der Montagefläche liegt, dann ist das Resultat '2001' oder höher. Damit kann man prüfen, ob eine Box auf einer Seite steht oder nicht … --- if pageNumber > 2000 then display dialog "Dieses Script funktioniert nicht mit Boxen auf der Montagefläche." buttons "OK" default button 1 with icon 0 error number -128 --- … mit einem Dialog das Problem mitteilen und mit dem Befehl 'error number -128' die Ausführung abbrechen.
Das funktioniert gut - auch mit QXP 6.1 - mit Doppelseiten-Layouts. Wenn das 6.1-Layout aber mit Einzelseiten aufgebaut ist und eine Box auf der Montagefläche steht, dann gibt es garantiert Probleme. Im besten Fall ist das Ergebnis nur '1' (statt '2001'). Meistens wird aber XPress unvermittelt beendet, wieder gestartet und die Fehlermeldung "QuarkXPress got an error: Connection is invalid. [-609]" erscheint.
Abhilfe: statt 'page number' den Ausdruck 'index' gebrauchen: Damit ist das Ergebnis wieder '2001' und XPress stürzt nicht ab.
Hans Haesler <hsa@ringier.ch>
QXP 6.1: Vorsicht, beim Abfragen von Seitennummern
"Erstens ist es komplizierter und zweitens als man denkt." Oder wie lautet der Spruch nun schon wieder?
Wenn zu den Doppel- und Einzelseitenlayouts auch noch die Musterseiten abgedeckt werden sollten, dann gibt es ein Problem: Der Gebrauch von 'index' ist okay bei Doppel- und Einzelseiten, aber bei Musterseiten gibt es einen Crash. Aber mit Musterseiten kann man 'page number' verwenden, was wie schon erwähnt mit Einzelseiten nicht geht.
Was tun? Einen Test einbauen, welcher feststellt, ob Layout- oder Musterseiten angezeigt sind. In eine Variable (hier 'docRef') die entsprechende Objektreferenz geben und in einer zweiten (hier 'isDoc') festhalten, ob Layout oder Musterseite. Um die Seitennummer "absturzlos" zu erhalten, kann dann im Handler 'getPageNumber()' jene Form verwendet werden, welche kein Problem verursacht: --- tell application "QuarkXPress 6.1" tell document 1 -- Die Variable 'docRef' erlaubt, entweder das Layout oder das Musterdokument zu adressieren -- und der Zustand von 'isDoc' ermöglicht später, die gefahrlose Formulierung einzusetzen set isDoc to 1 set docRef to object reference if masterdoc is true then set isDoc to 0 set docRef to object reference of master document 1 of application "QuarkXPress 6.1" end if end tell
tell docRef set pageNumber to my getPageNumber(isDoc, docRef) if pageNumber > 2000 then display dialog "Dieses Script funktioniert nicht mit Boxen auf der Montagefläche." buttons "OK" default button 1 with icon 0 -- mit dem nächsten Befehl wird die Ausführung abgebrochen error number -128 end if -- -- der Test ist bestanden. Weitere Befehle hier einfügen. -- end tell end tell
on getPageNumber(isDoc, docRef) tell application "QuarkXPress 6.1" if isDoc = 1 then tell docRef set pageNumber to index of page 1 of current box end tell else tell docRef set pageNumber to page number of page 1 of current box end tell end if end tell end getPageNumber ---