🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Draw: Seitenzahlen mit anpassbarer Start-Seitennummer

Alles zur Programmierung im LibreOffice.
Antworten
musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

Draw: Seitenzahlen mit anpassbarer Start-Seitennummer

Beitrag von musikai » Fr 20. Sep 2019, 13:56

In Draw können Seitenzahlen nur mit 1 beginnen.
Hier ist ein workaround um auch mit einer anderen Zahl zu beginnen.

Wenn nicht schon vorhanden erstellt dieses Macro ein TextObjekt mit Namen "pagenumber" in der Mitten unten auf der 1. Seite mit der Zahl "1" und erstellt und dazu eine Stilvorlage "pagenumbers".
Dann dupliziert es das Objekt auf allen Folgeseiten mit gleicher Position, Größe und Stil und erhöht die Zahl um 1.
Sie können die Position, Größe, Zahl des Objektes auf der ersten Seite ändern und dann das Macro nochmal laufen lassen, um alle anderen Duplikate zu erneuern.
Andere Eigenschaften können direkt durch Bearbeiten der Stilvorlage "pagenumbers" geändert werden.

Code: Alles auswählen

sub create_custom_Draw_pagenumbers
if not ThisComponent.StyleFamilies.getbyname("graphics").hasbyname("pagenumbers") then
 oStyle = ThisComponent.StyleFamilies.getbyname("graphics").createInstance("com.sun.star.style.StyleFamily")
 oStyle.ParaAdjust = 3
 oStyle.FillStyle = com.sun.star.drawing.FillStyle.NONE
 oStyle.LineStyle = com.sun.star.drawing.LineStyle.NONE
ThisComponent.StyleFamilies.getbyname("graphics").insertbyname("pagenumbers",oStyle)
end if 

oDrawpages=ThisComponent.getDrawPages()
oDrawpage=oDrawpages.getbyindex(0)
for ig =0 to oDrawpage.count-1
OriginalShape=oDrawpage.getbyindex(ig)
if OriginalShape.name = "pagenumber" then exit for
next

if ig=oDrawpage.count then
OriginalShape = Thiscomponent.createInstance("com.sun.star.drawing.TextShape")
    With OriginalShape
      .Position = CreatePoint(oDrawpage.Width/2-500,oDrawpage.Height-oDrawpage.BorderBottom-1000)
      .Size = CreateSize(1000,1000)    
      .Name = "pagenumber"
    End With
    oDrawpage.add(OriginalShape)
    OriginalShape.string="1"
    OriginalShape.Style = ThisComponent.StyleFamilies.getbyname("graphics").getbyname("text")
	OriginalShape.Style = ThisComponent.StyleFamilies.getbyname("graphics").getbyname("pagenumbers")
	OriginalShape.ZOrder = oDrawpage.count-1
end if

for i=1 to oDrawpages.count-1
oDrawpage=oDrawpages.getbyindex(i)

ig=oDrawpage.count-1
for ig =oDrawpage.count-1 to 0 step -1
existingTextShape=oDrawpage.getbyindex(ig)
if existingTextShape.name = "pagenumber" then  oDrawpage.remove(existingTextShape)
next

oTextShape = Thiscomponent.createInstance("com.sun.star.drawing.TextShape")
    With oTextShape
      .Position = OriginalShape.Position
      .Size = OriginalShape.Size      
      .Name = "pagenumber"
    End With
    oDrawpage.add(oTextShape)
    oTextShape.string=i+cint(OriginalShape.string)
    oTextShape.Style = ThisComponent.StyleFamilies.getbyname("graphics").getbyname("text")
	oTextShape.Style = OriginalShape.Style
	oTextShape.ZOrder = oDrawpage.count-1
	oTextShape.SizeProtect = True
	oTextShape.MoveProtect = True
next

end sub

Function CreatePoint(ByVal x As Long,ByVal y As Long) As com.sun.star.awt.Point
  Dim oPoint
  oPoint = CreateUnoStruct("com.sun.star.awt.Point")
  oPoint.X = x : oPoint.Y = y
  CreatePoint = oPoint
End Function

Function CreateSize(ByVal x As Long,ByVal y As Long) As com.sun.star.awt.Size
  Dim oSize
  oSize = CreateUnoStruct("com.sun.star.awt.Size")
  oSize.Width = x : oSize.Height = y
  CreateSize = oSize
End Function
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html


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.



Antworten