Shape drehen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Shape drehen

von Toxitom » Mi, 28.03.2007 11:46

Hallo Thomas,

ja, aber vergiss nicht dennoch die Fehlerkontrolle etc. (so, wei in deinem ersten Code dargestellt - das war schon gut) Und bei Mehrfachauswahl (oSel.count > 1) solltest du auch entsprechende Routinen einbauen!

Gruss
Thomas

von toni » Mi, 28.03.2007 10:03

Moin Thomas,

das klappt ja prima!!!

Jetzt kann ich mit

Code: Alles auswählen

oShape.rotateAngle = oShape.rotateAngle + 4500
per Klick das Rechteck 45 Grad weiter drehen.

Vielen Dank!

Gruss

Thomas

von Toxitom » Di, 27.03.2007 18:24

Hey Thomas,

die Idee ist ja schon mal gar nicht so schlecht. Aber: Wenn du ein Shape markierst, so erhälst du mit oDoc.currentSelection immer eine Gruppe von Shapes als Objekt zurück (es könnten ja mehrere Objekte markiert sein!

Ist es nur ein, so hat dieses den Index 0, und du kannst es direkt drehen :-)

Also, der folgende Code dreht das markiert Shape um 45°, ist die Kurzfassung, den Rest musst du halt anpassen.

Code: Alles auswählen

sub Shape_drehen
oDoc = thisComponent
	oSel = oDoc.getcurrentSelection()
	oShape = oSel.getByIndex(0)
	oShape.rotateAngle = 4500
end sub
Viele Grüße
Thomas

Shape drehen

von toni » Di, 27.03.2007 09:50

Hallo zusammen,

ich möchte ein markiertes Rechteck per Button drehen.
Mit

Code: Alles auswählen

Sub RechteckZeichnen
    oPage = ThisComponent.drawPages(0)
    
    mark1 = 1000
    mark2 = 2000
    
    For i = 1 to 2
    oRechteck = ThisComponent.createInstance("com.sun.star.drawing.RectangleShape")    
    oPage.add(oRechteck)    
        With oRechteck
         .Position = erzeugePunkt(mark1,mark2)
         .Size     = erzeugeSize(1800, 4400)
         .FillColor= RGB(255,255,255)
         .String   = "Hallo" & Chr(10) & "BAK "
         .CharHeight = 7
         .Name     = "Rechteck" & i
        End With
        mark1 = mark1 + 200
        mark2 = mark2 + 200
   Next  
End Sub
erzeuge ich zwei Rechtecke.

Wenn ich nun eines von beiden markiere, möchte ich diese Rechteck über einen Button drehen (bei jedem Klick um 45 Grad).

Ich habe etwas mit .CurrentSelection versucht um das markierte Rechteck zu erhalten, aber das bringt mich nicht weiter.

Code: Alles auswählen

gebaeude = ThisComponent.CurrentSelection
If gebaeude.SupportsService("com.sun.star.drawing.ShapeCollection") then
		If oRechteck.name = "Rechteck1" Then
			oRechteck.RotateAngle = 4500
		ElseIf oRechteck.name = "Rechteck2" Then
			oRechteck.RotateAngle = 4500
		End If
	End if
So kann ich das markierte Rechteck nicht ansprechen.

In VBA ging es einfach mit 'ActiveShape'.

Wie müsste ich es an stellen?

Gruss

Thomas

Nach oben