Draw: Seitenzahlen mit anpassbarer Start-Seitennummer
Verfasst: 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.
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