Forenindex » Programmierung/Entwicklung » AppleScript » Achtung: Falle beim Zeilenzählen

Achtung: Falle beim Zeilenzählen

Hans Haesler
  
Beiträge gesamt: 5826

25. Sep 2003, 13:03
Bewertung:

gelesen: 742

Beitrag als Lesezeichen
Dieses Script zählt die ausgewählten Zeilen richtig:
---
tell document 1 of application "QuarkXPress 4.11"
  tell selection
    set nLines to count lines
  end tell
  display dialog "Ausgewählte Zeilen:  " & nLines buttons "OK" default button 1 with icon 1
end tell
---
Aber... nur wenn die Auswahl innerhalb einer einzigen Box liegt. Wenn sich die Zeilen in zwei (oder mehr) Boxen befinden, dann werden nur die Zeilen gezählt, die in jener Box liegt, welche Anfasserpunkte aufweist.

Präzisierung: Wenn die Box, in welcher die Auswahl beginnt, ausgewählt ist, dann ist das Resultat richtig. Wenn man aber per Script die erste Box in der Kette aktiviert, dann ist das Ergebnis unter Umständen falsch. Am besten aktiviert man die Box in welcher die Auswahl beginnt.
---
tell selection
  set selected of text box 1 to true
Code
Doch vorher muss man sicherstellen, dass das Inhaltswerkzeug aktiv ist und dass nur eine Box ausgewählt ist. Dazu geht man gleich vor wie beim Script, welches die Absätze einer Story adressiert (siehe Thema "Die erste Box einer Textkette auswählen"): 

tell document 1 of application "QuarkXPress 4.11"
  activate
  if tool mode is not drag mode then set tool mode to drag mode
  try
    set boxType to box type of current box
  on error
    display dialog "Es ist keine Box ausgewählt." buttons "OK" default button 1 with icon 0
    error number -128
  end try
  if boxType is group box type then
    display dialog "Nur eine einzige Box auswählen." buttons "OK" default button 1 with icon 0
    error number -128
  else if boxType is not text box type then
    display dialog "Bitte eine Textbox auswählen." buttons "OK" default button 1 with icon 0
    error number -128
  end if
  set tool mode to contents mode
  tell selection
    set selected of text box 1 to true
    set nLines to count lines
  end tell
  display dialog "Ausgewählte Zeilen:  " & nLines buttons "OK" default button 1 with icon 1
end tell
---
Schön: wenn sich die Auswahl in einer mehrspaltigen Box befindet, dann ist das Resultat korrekt. Und nicht pro Spaltenübergang um eine Phantomzeile erhöht, wie es Goar im Thema "XPress: Absatz-Zeilenzahlen in langer Story ermitteln" schilderte.

Allerdings erhielt ich beim Testen des obigen Scripts ab und zu falsche Zahlen. Ich kann aber nicht genau sagen warum. Nur soviel: es geschieht, wenn die Boxen verschiedene Breiten aufweisen. Deshalb: Vorsicht!

Hans Haesler <hsa@ringier.ch>