Seite 1 von 1
[GELÖST]Re: Seiten- und Zeilenzahlen
Verfasst: Fr 5. Dez 2014, 11:41
von paulderfinne
Hallo ihr Lieben,
da ich mal wieder was in LO programmieren will, werde ich euch jetzt wohl öfter nerven müssen. Ich bräuchte für meine weitern Überlegungen per Programm die momentane Seitenzahl und Zeilenzahl. Dazu habe ich mit Hilfe eines Beitrags in einem OO-Forum folgende Zeilen geschrieben:
Code: Alles auswählen
sub PageLineInfo
DIM Doc As Object
DIM MyPageStyle As Object
DIM HContent As Object
DIM FooterCursor As Object
DIM PageNumber As Object
DIM StdPage As Object
oDoc = StarDesktop.CurrentComponent
MyPageStyle = oDoc.createInstance( "com.sun.star.style.PageStyle" )
MyPageNumber= oDoc.createInstance("com.sun.star.text.TextField.PageNumber")
msgbox "Du bist auf Seite" & MyPageNumber
end sub
Aber da laufe ich auf einen Laufzeitfehler: Falscher wert für Eigenschaft. Welchen Typ hat PageNumber von oben? Und kennt jemand den Befehl, wenn ich die momentane Zeilennummer haben will (auf deiser Seite?) .
Re: Seiten- und Zeilenzahlen
Verfasst: So 7. Dez 2014, 11:00
von paulderfinne
Da offenbar niemand eine Idee hat, wie man Seiten- und Zeilennummern auslesen kann, hat jemand vielleicht eine Idee, wie ich das anderweitig hinkriege:
Mein Anliegen: ich möchte Texte aus einem Memo-Feld einer Datenbank ausgeben. Da ich keine Ahnung habe wieviel Text da drin ist weiß ich nicht auf welcher Seite und in welcher Zeile ich lande. Da es sich hier um eine Rechnung handelt, muss ich je nachdem wie viele Seiten ich habe Zwischensumme und Übertrag setzen und ich muss entscheiden, ob der Schlussblock (summe +Mehrwertseuer = Gesamt) noch auf die Seite passt. Eine Möglichkeit das mit einer Dokumentenvorlage zu handeln, fällt mir nicht ein. Muss allerdings zugeben, dass ich da nicht wirklich Ahnung habe.
Daher wollte ich das mit einem Makro erledigen. Aber dazu brauch ich imho eben die Angaben, wo ich mich nach dem Ausgeben der Daten befinde.
Re: Seiten- und Zeilenzahlen
Verfasst: So 7. Dez 2014, 11:40
von paulderfinne
Entschuldigt wenn ich nerve, aber jetzt glaube ich, dass ich fündig geworden bin. Kann das allerdings nicht interpretieren.
https://forum.openoffice.org/en/forum/v ... 20&t=72491
Also was muss ich danach in meine Zeile schreiben?
MyPageNumber= oDoc.createInstance("com.sun.star.frame.XController.getCurrentController(PageCount)")
funktioniert jedenfalls nicht.
Re: Seiten- und Zeilenzahlen
Verfasst: So 7. Dez 2014, 12:41
von mikele
Hallo,
die folgenden Zeilen funktionieren bei mir:
Code: Alles auswählen
oDoc = ThisComponent
oCtr=oDoc.getCurrentController()
msgbox("Zeile: " & oCtr.LineCount &chr(13) &"Seite: " & oCtr.PageCount)
Re: Seiten- und Zeilenzahlen [GELÖST]
Verfasst: So 7. Dez 2014, 13:28
von paulderfinne
Jawohl! Vielen Dank Mikele. Du hast mir sehr geholfen. Genau das brauche ich
Re: Seiten- und Zeilenzahlen
Verfasst: So 7. Dez 2014, 18:57
von paulderfinne
Wenn mir jetzt noch jemand (Mikele?) verraten könnte, wie ich das Ding dazu bewege auch Leerzeilen zu zählen, wäre ich sehr dankbar.
Habe folgenden Link dazu gefunden:
https://www.openoffice.org/api/docs/com ... rties.html
Leider checke ich die ganze Logik mit dem com.sun.star... nicht
Re: Seiten- und Zeilenzahlen
Verfasst: Mo 8. Dez 2014, 21:22
von mikele
Hallo,
ich weiß nicht, ob es etwas einfacheres gibt, aber folgendes scheint zu funktionieren (zumindest bei reinen Textdokumenten):
Code: Alles auswählen
sub PageLineInfo
oDoc = ThisComponent
oCtr=oDoc.getCurrentController()
seite=oCtr.PageCount
oViewCursor = ThisComponent.CurrentController.getViewCursor()
merke=oViewCursor.getposition().y
oSaveCursor = oDoc.Text.createTextCursorByRange(oViewCursor)
oViewCursor.jumpToStartOfPage()
zeile=1
do while oViewCursor.getposition().y<>merke
zeile=zeile+1
oViewCursor.godown(1,false)
loop
oViewCursor.gotoRange(oSaveCursor, False)
msgbox("Zeile: " & zeile & chr(13) & "Seite: " & seite)
end sub
Re: Seiten- und Zeilenzahlen
Verfasst: Di 9. Dez 2014, 05:45
von paulderfinne
Ja, dass man hochläuft und die Zeilen zu Fuß zählt ist eine gute Idee. Dachte auch schin mal darüber nach. Aber wie man das dann konkret ausführt, hätte ich sowieso nicht gewusst. Von daher: Vielen Dank Mikele. Das funktioniert wunderbar. Hoffe ich darf wiedekommen, wenn ich wieder mal nicht weiter weiß.