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
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
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