von msg132e » Mi, 09.04.2014 11:47
Vielen Dank für deine Hilfe Apollo102. Hat mir sehr weitergholfen. Vollständigkeitshalber folgt hier noch der vollständige Code. Möge er weiterhelfen:
Code: Alles auswählen
Public oDoc as object
Public oLinie as object
Public oTxtCur as Object
Sub Test()
Gitternetz(5, 50, 100,2) 'angaben in mm
End sub
Sub Gitternetz(abstand as integer, breite as integer, hoehe as integer, aussenabstand as integer)
'Gruppierungs-Objekt für das Gitternetz erstellen
oShapeGroup = createUnoService("com.sun.star.drawing.ShapeCollection")
' Längenangaben von mm in 1/1000cm umrechnen
abstand = abstand*100
breite = breite*100
hoehe = hoehe*100
aussenabstand = aussenabstand*100
'Anzahl Linien Berechnen
anzahl_hLinien = hoehe / abstand
anzahl_vLinien = breite / abstand
' Horizontale Linien
for horizontal = 0 to anzahl_hLinien
'Position der Linien bestimmen
HoriOrientPosition = 0
VertOrientPosition = abstand * horizontal
' Horizontale Linien zeichnen
LinienZeichnen(HoriOrientPosition, VertOrientPosition, 0, breite)
' Linie dem Gitternetz hinzufügen, welches später gruppiert wird
oShapeGroup.add(oLinie)
next
' Vertikale Linien
for vertikal = 0 to anzahl_vLinien
'Position der Linien bestimmen
HoriOrientPosition = abstand * vertikal
VertOrientPosition = 0
' Vertikale Linien zeichnen
LinienZeichnen(HoriOrientPosition, VertOrientPosition, hoehe, 0)
' Linie dem Gitternetz hinzufügen, welches später gruppiert wird
oShapeGroup.add(oLinie)
next
'Gitternetz gruppieren
oGruppe = ThisComponent.DrawPage.group(oShapeGroup)
With oGruppe
.TopMargin = aussenabstand
.BottomMargin = aussenabstand
.LeftMargin = aussenabstand
.RightMargin = aussenabstand
end With
End Sub
Function LinienZeichnen(x as integer, y as integer, hoehe as integer, breite as integer)
'Neue Linie vorbereiten
oLinie = ThisComponent.createInstance("com.sun.star.drawing.LineShape")
'Grösse der Linien bestimmen
Dim size as new com.sun.star.awt.Size
size.Height = hoehe
size.Width = breite
With oLinie
.LineColor = rgb(0, 0, 0)
.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT
.lineWidth = 0
.sizeProtect = true
.MoveProtect = true
.HoriOrientPosition = x
.VertOrientPosition = y
.Size = size
End With
'Einfügeort bestimmen
oViewC = ThisComponent.getCurrentController().getViewCursor()
If isEmpty(oViewC.textTable) then
'Linien im Text einfügen
oTextC = ThisComponent.text.createTextCursorByRange(oViewC)
ThisComponent.text.insertTextContent(oViewC, oLinie, false)
Else
'Linien in Tabelle einfügen
oZelle = oViewC.Cell
oTextC = oZelle.createTextCursorByRange(oViewC)
oTextC.getText().insertTextContent(oViewC, oLinie, false)
Endif
End Function
Vielen Dank für deine Hilfe Apollo102. Hat mir sehr weitergholfen. Vollständigkeitshalber folgt hier noch der vollständige Code. Möge er weiterhelfen:
[code]Public oDoc as object
Public oLinie as object
Public oTxtCur as Object
Sub Test()
Gitternetz(5, 50, 100,2) 'angaben in mm
End sub
Sub Gitternetz(abstand as integer, breite as integer, hoehe as integer, aussenabstand as integer)
'Gruppierungs-Objekt für das Gitternetz erstellen
oShapeGroup = createUnoService("com.sun.star.drawing.ShapeCollection")
' Längenangaben von mm in 1/1000cm umrechnen
abstand = abstand*100
breite = breite*100
hoehe = hoehe*100
aussenabstand = aussenabstand*100
'Anzahl Linien Berechnen
anzahl_hLinien = hoehe / abstand
anzahl_vLinien = breite / abstand
' Horizontale Linien
for horizontal = 0 to anzahl_hLinien
'Position der Linien bestimmen
HoriOrientPosition = 0
VertOrientPosition = abstand * horizontal
' Horizontale Linien zeichnen
LinienZeichnen(HoriOrientPosition, VertOrientPosition, 0, breite)
' Linie dem Gitternetz hinzufügen, welches später gruppiert wird
oShapeGroup.add(oLinie)
next
' Vertikale Linien
for vertikal = 0 to anzahl_vLinien
'Position der Linien bestimmen
HoriOrientPosition = abstand * vertikal
VertOrientPosition = 0
' Vertikale Linien zeichnen
LinienZeichnen(HoriOrientPosition, VertOrientPosition, hoehe, 0)
' Linie dem Gitternetz hinzufügen, welches später gruppiert wird
oShapeGroup.add(oLinie)
next
'Gitternetz gruppieren
oGruppe = ThisComponent.DrawPage.group(oShapeGroup)
With oGruppe
.TopMargin = aussenabstand
.BottomMargin = aussenabstand
.LeftMargin = aussenabstand
.RightMargin = aussenabstand
end With
End Sub
Function LinienZeichnen(x as integer, y as integer, hoehe as integer, breite as integer)
'Neue Linie vorbereiten
oLinie = ThisComponent.createInstance("com.sun.star.drawing.LineShape")
'Grösse der Linien bestimmen
Dim size as new com.sun.star.awt.Size
size.Height = hoehe
size.Width = breite
With oLinie
.LineColor = rgb(0, 0, 0)
.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT
.lineWidth = 0
.sizeProtect = true
.MoveProtect = true
.HoriOrientPosition = x
.VertOrientPosition = y
.Size = size
End With
'Einfügeort bestimmen
oViewC = ThisComponent.getCurrentController().getViewCursor()
If isEmpty(oViewC.textTable) then
'Linien im Text einfügen
oTextC = ThisComponent.text.createTextCursorByRange(oViewC)
ThisComponent.text.insertTextContent(oViewC, oLinie, false)
Else
'Linien in Tabelle einfügen
oZelle = oViewC.Cell
oTextC = oZelle.createTextCursorByRange(oViewC)
oTextC.getText().insertTextContent(oViewC, oLinie, false)
Endif
End Function[/code]