Writer: Seitenanzahl ermitteln

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

ruin
Beiträge: 7
Registriert: Fr, 11.11.2005 16:46
Wohnort: Wuppertal

Writer: Seitenanzahl ermitteln

Beitrag 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.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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
ruin
Beiträge: 7
Registriert: Fr, 11.11.2005 16:46
Wohnort: Wuppertal

Beitrag 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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag 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
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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
ruin
Beiträge: 7
Registriert: Fr, 11.11.2005 16:46
Wohnort: Wuppertal

Beitrag von ruin »

Absolute Spitzenklasse. Damit sind alle Probleme beseitigt.

Vielen Dank.
Ingo
Antworten