🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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. 🤗

Calc, Grafikelemente einfügen in die Drawpage

Alles zur Programmierung im LibreOffice.
Antworten
Luftschraube
Beiträge: 39
Registriert: So 5. Mai 2019, 09:20

Calc, Grafikelemente einfügen in die Drawpage

Beitrag von Luftschraube » Mi 27. Jan 2021, 16:18

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) 1372 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) 1372 mal betrachtet
vielen Dank
Luftschraube

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Calc, Grafikelemente einfügen in die Drawpage

Beitrag von craig » Mi 27. Jan 2021, 17:14

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


Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

Luftschraube
Beiträge: 39
Registriert: So 5. Mai 2019, 09:20

[gelöst] Calc, Grafikelemente einfügen in die Drawpage

Beitrag von Luftschraube » Sa 30. Jan 2021, 18:42

Hallo
Vielen Dank für das ausführliche Beispielmakro, hat mir sehr geholfen !
gruss Luftschraube


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