🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Alles zur Programmierung im LibreOffice.
-
paulderfinne
- Beiträge: 71
- Registriert: Mi 20. Feb 2013, 13:49
Beitrag
von paulderfinne » Fr 5. Dez 2014, 11:41
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?) .
Zuletzt geändert von
paulderfinne am Di 9. Dez 2014, 05:47, insgesamt 3-mal geändert.
-
paulderfinne
- Beiträge: 71
- Registriert: Mi 20. Feb 2013, 13:49
Beitrag
von paulderfinne » So 7. Dez 2014, 11:00
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.
-
paulderfinne
- Beiträge: 71
- Registriert: Mi 20. Feb 2013, 13:49
Beitrag
von paulderfinne » So 7. Dez 2014, 11:40
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.
-
mikele
- * LO-Experte *
- Beiträge: 1932
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » So 7. Dez 2014, 12:41
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)
Gruß,
mikele
-
paulderfinne
- Beiträge: 71
- Registriert: Mi 20. Feb 2013, 13:49
Beitrag
von paulderfinne » So 7. Dez 2014, 13:28
Jawohl! Vielen Dank Mikele. Du hast mir sehr geholfen. Genau das brauche ich
-
mikele
- * LO-Experte *
- Beiträge: 1932
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » Mo 8. Dez 2014, 21:22
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
Gruß,
mikele
-
paulderfinne
- Beiträge: 71
- Registriert: Mi 20. Feb 2013, 13:49
Beitrag
von paulderfinne » Di 9. Dez 2014, 05:45
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ß.
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.