Hallo Andreas,
ich kann die Syntax Deines Scripts erst prüfen, wenn ich 'last page' in 'page -1' verwandle. Auch mit XPress 4.11 unter Mac OS 9.2.1.
Mit QuarkXPress 6.1 unter Mac OS X 10.3.2 muss nur wenig geändert werden, damit das Script läuft:
1. 'page -1' (anstelle von 'last page'
2. 'delete current box' (anstelle von 'delete selection')
3. die Zeile 'set tool mode to drag mode' aus dem 'tell page -1'-Blocks hinaus verschieben.
Das ist alles. Ich habe aber den Pfad und den Namen für die Box nicht von FileMaker bezogen, sondern einfach den beiden Variablen zugewiesen.
Einige Bemerkungen (ich befürchte zwar, dass einige widerlegt werden, wenn Teile des Scripts in Betracht gezogen werden, welche ich nicht kenne).
A. Die Variablen müssen nicht als 'global' deklariert werden.
B. Der Wert von 'set y to current page' wird nirgends gebraucht.
C. Die Liste der 'bounds' kann man direkter ausziehen.
D. Beide Fehlermeldungen sprechen von Bildboxen, obwohl bei einer ausgewählten Textbox auch eine Aktion erfolgt.
E. Der Befehl 'activate' muss nur einmal erfolgen. Die weiteren sind überflüssig.
F. Der äussere XPress-Block enthält zwei weitere XPress-Blocks.
G. Statt 'class' ist es gebräuchlicher 'box type' zu benutzen.
H. Der Test 'if class of current box' sollte nicht mit 'end if' abgeschlossen und dann gleich nochmals gestartet werden. Es ist effizienter, die beiden Tests mit 'else if' in einer Schleife zusammenzufassen. Okay, bei nur zweien ist der Unterschied nicht spürbar. Aber bei einer grossen Anzahl wird die Schleife verlassen, sobald eine Übereinstimmung da ist, während bei isolierten 'if / end if'-Konstruktionen jede drangenommen wird.
Ich habe das Ganze etwas gestrafft und so sieht es aus:
---
set DerPfad to ((path to "cusr") as string) & "Documents:dtpro_Forum:Andreas_Probleme:fleur.tif"
set Rahmenname to "1234"
tell document 1 of application "QuarkXPress 4.11"
activate
try
set boxType to box type of current box
on error
display dialog "No box is selected.
Il n'y a pas de bloc sélectionné.
Kein Rahmen ist ausgewählt." buttons "OK" default button 1 with icon 2
error number -128
end try
if boxType is text box type then
set {y1, x1, y2, x2} to bounds of current box as list
delete current box
tell page -1
make picture box at beginning with properties {bounds:{y1, x1, y2, x2}}
set name of picture box 1 to Rahmenname
select picture box Rahmenname
end tell
set tool mode to drag mode
else if boxType is picture box type then
tell current box
set image 1 to alias DerPfad
set bounds of image 1 to proportional fit
end tell
end if
end tell
---
Bitte führe dieses Script erst Mal ohne FileMaker-Präsenz aus. Du musst nur den Pfad anpassen. Der '((path to "cusr") as string)' ist der Pfad zu Deinem Benutzerordner. Nach dem "&"-Zeichen folgen dann die Namen weiterer Ordner und zum Schluss jener der Bilddatei.
Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418656]