Libre Office

[gelöst] Mehrere Sheets mit Listener, wer war's ?

Alles zur Programmierung im LibreOffice.
Antworten
Fischreiher
Beiträge: 17
Registriert: Mi 24. Feb 2016, 15:48

[gelöst] Mehrere Sheets mit Listener, wer war's ?

Beitrag von Fischreiher » Fr 4. Mär 2016, 17:14

Ich habe einen Listener, der bewusst zu mehreren Sheets addiert wurde.

Wenn in den Tabellen Sheet-übergreifende Bezüge existieren, kann eine Änderung dazu führen, dass sich auf mehreren Sheete etwas ändert und so der Listener mehrfach aufgerufen wird. Das ist nicht immer der Fall, offenbar abhängig davon, ob seit der letzten Änderung am gleichen Feld der Sheet gewechselt wurde.

Für eine saubere Lösung möchte ich herausfinden, von welchem Sheet der Listener aufgerufen wurde.

Kann mir jemand mit der Zeile unten in "Modify_modified" helfen?

Code: Alles auswählen

Global oListener as Object

' Tools - Customize - Events (in the document window, not the macro window)
' Open Document  -> AddListener
' Document Close -> RemoveListener

Sub AddListener
	oListener = createUnoListener("Modify_","com.sun.star.util.XModifyListener")
	oSheets=ThisComponent.Sheets
	for i=0 to oSheets.count-1 'for all sheets
		oSheet = ThisComponent.sheets(i)
		oSheet.addModifyListener(oListener)
	next
End Sub

Sub RemoveListener
	oSheets=ThisComponent.Sheets
	for i=0 to oSheets.count-1 'for all sheets
		oSheet = ThisComponent.sheets(i)
		oSheet.removeModifyListener(oListener)
	next
End Sub

Sub Modify_modified(oEvent As Object)
	sSheetName = ThisComponent.getCurrentController().getActiveSheet().getName()
    print "oEvent came from ",sSheetName ' wrong, should be oEvent.Source.something
End Sub

Sub Modify_disposing(oEvent As Object)
End Sub
Zuletzt geändert von Fischreiher am So 6. Mär 2016, 10:14, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2720
Registriert: Fr 10. Dez 2010, 10:01

Re: Mehrere Sheets mit Listener, wer war's ?

Beitrag von karolus » Fr 4. Mär 2016, 17:34

Hallo

Surprise, surprise

Code: Alles auswählen

Sub Modify_modified(oEvent As Object)
   print "oEvent came from ",oEvent.Source.Name
End Sub
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Fischreiher
Beiträge: 17
Registriert: Mi 24. Feb 2016, 15:48

Re: Mehrere Sheets mit Listener, wer war's ?

Beitrag von Fischreiher » Fr 4. Mär 2016, 17:42

Danke schön. Ich dachte, ich hätte das schon ausprobiert, muss mich aber wohl vertippt haben.

Fischreiher
Beiträge: 17
Registriert: Mi 24. Feb 2016, 15:48

Re: Mehrere Sheets mit Listener, wer war's ?

Beitrag von Fischreiher » Fr 4. Mär 2016, 17:49

Folgefrage: Jetzt wo ich die Namen sehe, bin ich sicher, dass ich blattübergreifende Bezüge habe, die nicht beabsichtigt sind.

Weiß jemand, wie man blattübergreifende Bezüge einfach finden kann?

Mit "Search in Formulas" nach den betroffenen Sheet-Namen finde ich nichts.

Open Office
Antworten