zu meinem Thema habe ich nichts Annäherndes im Forum gefunden (was nichts heißen muss), sodass die Sache hoffentlich von breiterem Interesse ist.
Mein Makro soll Zellen mit Pfeilen verbinden, deren Farbe und Stärke von den Zelleninhalten abhängt.
Nachfolgend das Unterprogramm für das Setzen der Pfeile, der Übersichtlichkeit halber mit festen Werten und auf seine Grundstruktur „eingedampft“.
Code: Alles auswählen
Sub Pfeil_setzen
	Dim xLinie, xZelle1, xZelle2, xFolie As Object
	Dim oTabelle As Object
	Dim oPunkt As New com.sun.star.awt.Point		'Position eines Punktes
	Dim xRechteck As New com.sun.star.awt.Size		'umschreibendes Rechteck
	oTabelle = ThisComponent.Sheets().getByName("Tabelle")
	xZelle1 = oTabelle.getCellByPosition(1, 2)
	xZelle2 = oTabelle.getCellByPosition(3, 4)
	oPunkt.X = xZelle1.Position.X				'linke obere Ecke
	oPunkt.Y = xZelle1.Position.Y				'linke obere Ecke
	xRechteck.Width = xZelle2.Position.X - oPunkt.X		'Breite
	xRechteck.Height = xZelle2.Position.Y - oPunkt.Y	'Höhe
	xLinie = ThisComponent.createInstance("com.sun.star.drawing.LineShape")
	With xLinie
		.Position = oPunkt				'Beginn
		.Size = xRechteck				'umschreibendes Rechteck
		.LineWidth = 100				'Linienstärke
		.LineColor = RGB(8, 128, 1)			'Linienfarbe
	End With
	xFolie = oTabelle.getDrawPage()
	'Die Linie in eeine Folie einfügen und mit Pfeilspitze versehen (diese Reihenfolge ist zwingend)
	xFolie.add(xLinie)
	xLinie.LineEndName = "Arrow concave"
End Sub
1. Während ich über LineWidth die Linienbreite vergrößere, bleibt die Pfeilspitze unverändert. Ist das halt so komisch oder mache ich etwas falsch?
2. Wo sind Services wie "com.sun.star.drawing.LineShape“ dokumentiert? Konkret suche ich etwas wie LineType oder LineStyle = „dashed“ für gestrichelte Linie.
3. Wie bekomme ich ‑für eine Aktualisierung der Ansicht- die Pfeile wieder weg, damit ich neue setzen kann? Meine vergeblichen Versuche gehen in untenstehende Richtung. Um die Folien zu löschen, könnte ich sie auch namentlich ansprechen. Aber ich weiß nicht wo und wie ich die Namen vergeben müsste und vermute einen einfacheren Weg, da ich ja alle Pfeile (Folien) entfernen möchte.
Code: Alles auswählen
Sub Pfeil_loeschen
	Dim xFolien As Object
	Dim oDoc, oTabelle As Object	
	''oTabelle = ThisComponent.Sheets().getByName("Tabelle")
	''xFolien = oTabelle.getDrawPages()
	oDoc = ThisComponent
	xFolien = oDoc.getDrawPages()
	xFolien.remove(xFolien.getByIndex(0))
End Sub
Rudi