Hallo Maggus,
und nun zu den Listener Methoden:
zu Methode 1 und 3 .
Code: Alles auswählen
Dim oEvent as new com.sun.star.script.ScriptEventDescriptor
...
'und
Dim aEventArgs(1) as new com.sun.star.beans.PropertyValue
...
Diese Methoden setzen einen Event-Listener genau so, als wenn du ihn selber über die GUI gesetzt hättest.
Wobei Methode 1 für "Formular-Steuerelemente" gilt, und Methode3 für Alle Graphischen Object.
Diesen Methoden muss nur das eine auszuführende Makro zur Verfügung gestellt werden.
Alle anderen Benötigten Methoden werden vom Dokument selber bereitgestellt.
Listener, die mit Methode 1 und 3 erstellt werden, stehen auch nach dem beenden und Neuladen des Dokuments zur Verfügung.
Sie können von Hand, oder per Makro entfernt werden.
Die Listener, die einem mit diesen Methoden zur Verfügung stehen sind genau diejenigen, die einem auch in der GUI zur Verfügung stehen (aber mit englischen Namen.)
Ich kann also auf ein Graphik Object nicht die Methode "Bei Fokuserhalt" setzen, da ich diese Methode auch nicht in der GUI zur Verfügung habe.
Methode 2 ist ganz anders:
Welche Listener man mit dieser Methode ein Object zuweisen kann sieht man am einfachsten,
indem man das gewünschte Object mit
Xray oder MRI Untersucht.
ein Xray Beispiel siehe Anhang.
ob ein solcher Listener vom "XEventListener" abstammt und somit die Methode "disposing" benötigt, sieht man z.B. in der
API
Welche Methoden er unterstützt, sieht man ebenfalls in der
API
die dort aufgeführten Methoden müssen neben der Methode "disposing" implementiert werden.
Zusätzlich muss der Listener als Globale Variable deklariert werden, damit er auch wieder entfernt werden kann.(
Ein sehr ausführliches Beispiel)
Listener, die mit dieser Methode2 einem Object zugewiesen wurden, werden beim schließen des Dokuments automatisch entfernt,
und müssen nach jedem Neustart aufs neue zugewiesen werden.
Gruß Frieder
P.S.
Hier noch ein Screenshot der Methoden von "ThisComponent".
Wenn man bei Xray auf Details klickt, bekommt man auch gleich die richtigen Namen der Listener.
Code: Alles auswählen
addPropertyChangeListener ( aPropertyName as string, xListener as com.sun.star.beans.XPropertyChangeListener )
addPrintJobListener ( xListener as com.sun.star.view.XPrintJobListener ) com.sun.star.view.XPrintJobBroadcaster
addPropertyChangeListener ( aPropertyName as string, xListener as com.sun.star.beans.XPropertyChangeListener ) com.sun.star.beans.XPropertySet
addStorageChangeListener ( xListener as com.sun.star.document.XStorageChangeListener )

- Listener_ThisComponent.png (54.81 KiB) 5318 mal betrachtet