Seite 1 von 1

Writer: Seitenanzahl ermitteln

Verfasst: Fr, 15.09.2006 13:50
von ruin
Hallo allerseits,

ich suche nach einem Weg die Gesamtseitenanzahl in einem Writer Dokument zu ermitteln ohne den sichtbaren Cursor zu verwenden.
Bisher verwende ich die folgende Funktion:

Code: Alles auswählen

function getpages as Integer
   myDoc = thiscomponent
   myViewCursor=myDoc.GetCurrentController.ViewCursor
   myTempCursor=myViewCursor
   myViewCursor.jumpToLastPage
   getpages=CInt(myViewCursor.getPage())
   myViewCursor.gotoRange(myTempCursor,false)
end function  
Es funktioniert, aber je nachdem verschiebt sich dabei der Bildschirmbereich, was wirklich störend ist.

Vielen Dank im voraus.

Verfasst: Fr, 15.09.2006 14:41
von Stephan
naja, nun hättest Du mal in Michaels FAQ noch etwas weiter gelesen :wink: (... und ein wenig kombiniert)

Code: Alles auswählen

Sub Main
myDoc = thiscomponent
mytextCursor=myDoc.text.createtextcursor()
myDoc.LockControllers
myViewCursor=myDoc.GetCurrentController.ViewCursor
mytextcursor.gotoRange(myViewCursor,false)
myViewCursor.jumpToLastPage
getpages=myViewCursor.getPage()
myViewCursor.gotoRange(mytextCursor,false)
myDoc.UnLockControllers
msgbox getpages
End Sub

Gruß
Stephan

Verfasst: Fr, 15.09.2006 15:54
von ruin
Hallo Stephan,

vielen Dank erstmal.

Leider wird aber auch bei deinem Beispiel der Focus am Ende wieder auf die aktuelle Cursorposition gesetzt, auch wenn man z.B. über die Scrollbar eine ganz andere Stelle im Dokument anzeigt.

Ingo

Verfasst: Fr, 15.09.2006 17:06
von Stephan
Leider wird aber auch bei deinem Beispiel der Focus am Ende wieder auf die aktuelle Cursorposition gesetzt
ja, aber bitte doch ohne "auch" - Deine Funktion läßt den sichtbaren Cursor auf der letzten Seite (was wohl Michael nicht beabsichtigte waxs aber so ist) - mein Malro kehrt zur Ursprungsposition des Cursors zurück
auch wenn man z.B. über die Scrollbar eine ganz andere Stelle im Dokument anzeigt
da sehe ich zunächst auch keinerlei andere Möglichkeit, ich brauche doch einen 'Haltepunkt'

-->klicke vor Ausführen des Makros in das Dokument wie es gerade gescrollt ist

Eine richtige Lösung dürfte mittels Feldbefehl möglich sein, das findest Du irgendwo im englischen Forum.
Das Prinzip ist Feldbefehl "Seitenanzahl" einfügen, dessen Anzeige lesen und den Feldbefehl wieder löschen - ob das ganz ohne 'Dokumentbewegung' geht weiß ich nicht genau.


Gruß
Stephan

Verfasst: Sa, 16.09.2006 14:22
von ykcim
Das lasse ich nicht auf mir sitzen .. :D
Deine Funktion läßt den sichtbaren Cursor auf der letzten Seite (was wohl Michael nicht beabsichtigte waxs aber so ist) - mein Malro kehrt zur Ursprungsposition des Cursors zurück ...
Den Teil habe ich gerade aktualisiert. Ich habe nämlich vor kurzem die Stelle gefunden an der man die Seitenzahl direkt auslesen kann: CurrentController.

Code: Alles auswählen

  odoc = thiscomponent
  pages=odoc.CurrentController.PageCount
mfg
Michael

Verfasst: Sa, 16.09.2006 15:26
von Stephan
Den Teil habe ich gerade aktualisiert. Ich habe nämlich vor kurzem die Stelle gefunden an der man die Seitenzahl direkt auslesen kann: CurrentController.
prima.



Gruß
Stephan

Verfasst: Di, 19.09.2006 14:55
von ruin
Absolute Spitzenklasse. Damit sind alle Probleme beseitigt.

Vielen Dank.
Ingo