Seite 1 von 1
Calc, Grafikelemente einfügen in die Drawpage
Verfasst: Mi 27. Jan 2021, 16:18
von Luftschraube
Guten Tag
Beschäftige mich in Calc eben mit Drawpage, also dem Einfügen von grafischen Elementen in die Drawpage eines Calc-Sheets. Dabei hab ich aber das Problem mehrere grafische Elemente auch nacheinander der Drawpage von Sheet(0) zuzufügen.
Hab schon experimentiert mit
oDrawpage = thiscomponent.Sheets(0).Drawpage
oDrawpage.getbyIndex(0). ???
oDrawpage.getbyIndex(1). ???
Hat alles nicht funktioniert. Bei Andrew Pintonyak Seite 321 'Linien mit Pfeilen zeichnen in Calc' steht ein Beispiel wo die grafischen Linien tatsächlich programmiert werden bevor sie der Drawpage zugefügt werden(Drawpage.add(oLine)).
Kann das heissen dass man mehrere fertig erstellte grafische Elemente, also z.B. mehrere Pfeile die man z.B. über 'Linien und Pfeile' erzeugt hat wie im Bild zu sehen

- Bildschirmfoto zu 2021-01-27 15-24-20.png (35.21 KiB) 1373 mal betrachtet
nicht in die Drawpage eines Sheets(x) einfügen kann ?

- Bildschirmfoto zu 2021-01-27 15-24-20.png (35.21 KiB) 1373 mal betrachtet
vielen Dank
Luftschraube
Re: Calc, Grafikelemente einfügen in die Drawpage
Verfasst: Mi 27. Jan 2021, 17:14
von craig
Hallo,
hier zwei Beispielcodes, welche Du z.B. in Writer, Draw und auch Calc anwenden kannst:
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
REM ══════════════════════════════════════════════════════════════════════════════════════════════════
REM Draw: Pfeil einfügen. Das Array beinhaltet die Typen der Pfeilspitzen
REM ══════════════════════════════════════════════════════════════════════════════════════════════════
Sub [einen Pfeil einfuegen]
Dim oDoc as Object
Dim oDrawPage as Object
Dim oLine as Object
Dim aPos As New com.sun.star.awt.Point 'Position eines Punktes
Dim aSize As New com.sun.star.awt.Size 'Grafikgröße
oDoc=Thiscomponent
REM Die erste Folie wird gewählt
oDrawPage = oDoc.getDrawPages().getByIndex(0)
REM Muss NACH dem Einfügen der Linie in die Folie getan werden.
REM Nicht alle Flags funktionieren in Draw:
REM • Arrow
REM • Arrow concave
REM • Circle
REM • Dimension Lines
REM • Double Arrow
REM • Line Arrow
REM • Rounded large Arrow
REM • Rounded short Arrow
REM • Small Arrow
REM • Square
REM • Square 45
REM • Symmetric Arrow
'xray oLine
Dim myArray(11)
myArray()=Array("Arrow","Arrow concave","Circle","Dimension Lines","Double Arrow", _
"Line Arrow","Rounded large Arrow","Rounded short Arrow","Small Arrow","Square","Square 45","Symmetric Arrow")
'com.sun.star.drawing.GraphicObjectShape
oLine = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
'xray oLine
oLine = oDoc.createInstance("com.sun.star.drawing.LineShape")
oLine.LineColor = RGB(255,0,0) 'Linienfarbe
' Angabe in mm
' IN der Drawoberfläche wird Punkt erwartet:
' 1pt = 0,3527mm
' Alle Maßangaben sind in Hundertstel mm.
' 35,27mm = 1pt
' 52,09mm = 1,5pt
' 81,12mm = 2,3pt
oLine.LineWidth = 35.27 '81.12 '52.09 'Linienstärke
'xray oline
aSize.Width = 1000 'Breite
aSize.Height= 0 'Höhe
oLine.setSize(aSize)
aPos.X = 2000 'Abstand von links
aPos.Y = 2000 'Abstand von oben
oLine.setPosition(aPos)
oDrawPage.add(oLine)
' oLine.LineWidth = 50 'Linienstärke
oLine.LineEndName = myArray(0)
End Sub
Sub [mehrere Pfeile einfuegen]
Dim oDoc as Object
Dim oDrawPage as Object
Dim oLine as Object
Dim nTop as Long
Dim nCnt1 as Long
Dim aPos As New com.sun.star.awt.Point 'Position eines Punktes
Dim aSize As New com.sun.star.awt.Size 'Grafikgröße
oDoc=Thiscomponent
REM Die erste Folie wird gewählt
oDrawPage = oDoc.getDrawPages().getByIndex(0)
REM Muss NACH dem Einfügen der Linie in die Folie getan werden.
REM Nicht alle Flags funktionieren in Draw:
REM • Arrow
REM • Arrow concave
REM • Circle
REM • Dimension Lines
REM • Double Arrow
REM • Line Arrow
REM • Rounded large Arrow
REM • Rounded short Arrow
REM • Small Arrow
REM • Square
REM • Square 45
REM • Symmetric Arrow
'xray oLine
Dim myArray(11)
myArray()=Array("Arrow","Arrow concave","Circle","Dimension Lines","Double Arrow", _
"Line Arrow","Rounded large Arrow","Rounded short Arrow","Small Arrow","Square","Square 45","Symmetric Arrow")
'com.sun.star.drawing.GraphicObjectShape
oLine = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
'xray oLine
nTop=2000
for nCnt1 = 0 to 11
'Alle Maßangaben sind in Hundertstel mm.
' oCap=oLine = oDoc.createInstance("com.sun.star.drawing.LineCap")
oLine.Linecap="SQUARE"
oLine = oDoc.createInstance("com.sun.star.drawing.LineShape")
oLine.LineColor = RGB(255,0,0) 'Linienfarbe
oLine.LineWidth = 80 'Linienstärke
aSize.Width = 1000 'Breite
aSize.Height= 0 'Höhe
oLine.setSize(aSize)
'xray oLine
aPos.X = 2000 'Abstand von links
aPos.Y = nTop 'Abstand von oben
oLine.setPosition(aPos)
nTop=nTop +500
oDrawPage.add(oLine)
on error resume next
oLine.LineEndName = myArray(nCnt1)
next nCnt1
End Sub
[gelöst] Calc, Grafikelemente einfügen in die Drawpage
Verfasst: Sa 30. Jan 2021, 18:42
von Luftschraube
Hallo
Vielen Dank für das ausführliche Beispielmakro, hat mir sehr geholfen !
gruss Luftschraube