Hmm,
wenn ich als Basisobjekt statt dem "com.sun.star.drawing.GraphicObjectShape" ein
"com.sun.star.drawing.ControlShape" verwende, steht mir also ein "mouse_Pressed" - Event zur Verfügung.
Dann wird der Listener-Funktion ein Event - Objekt übergeben. Das gefällt mir.
Leider kann das Basisobjekt dann nicht mehr im Calc-Sheet verschoben werden. (Das GraphicObjectShape kann man
mit der rechten Maustaste anklicken und dann verschieben.)
Seltsamer Weise ist es so, dass wenn ich ein fehlerhaftes Makro starte, sich danach auch
das ControlShape verschieben lässt. Wird vielleicht beim Debuggen von einem
"run mode" in einen "edit mode" gewechselt? Kann man diesen Wechsel auch per Makro ausführen?
Wahrscheinlich reagiert die ControlShape aber dann nicht mehr auf den Links-Click?
Noch ein anderer Gedanke. Kann ich auf eine "globale Event-Verwaltung" zugreifen und darüber
die Quelle des letzten Click-Events abfragen? Ich habe bereits im Internet gesucht aber nichts in der Art gefunden.
Code: Alles auswählen
Sub Listener_Action()
oEvent = ThisComponent.getLastMousClickAction() '<= gibt es so etwas in der Art?
MySource = oEvent.source
End Sub
Als Alternative hab ich auch noch versucht ein Diagramm-Objekt zu verwenden.
Code: Alles auswählen
odoc = ThisComponent
oController = odoc.currentcontroller
oSheet = ocontroller.activeSheet
Dim aRect as new com.sun.star.awt.Rectangle
with aRect
.X = 0 : .Y = 0 : .Width = 6000 : .Height = 6000
end with
oSheet.Charts.addNewByName("MyDiagram", aRect, Array(), False, True)
oChart = oSheet.Charts.getByName( "MyDiagram" )
'Xray oChart
Allerdings kann man dem glaube ich auch keinen MouseListener zuweisen.
Grüße,
Stefan