Seite 1 von 1

OnSave per Makro zuweisen

Verfasst: So, 20.01.2013 15:16
von Heike T
Hallo und guten Tag,

ich will mit einem Makro OpenOffice-weit dem Event "OnSave" ein Makro zuweisen.
Bisher habe ich es mit einem Listener versucht

Code: Alles auswählen

MyListener = CreateUnoListener("MyEvent_",  "com.sun.star.document.XDocumentEventListener")
Ich gehe davon aus, dass ich den Listener bei dem Broadcaster "com.sun.star.document.XDocumentEventBroadcaster" registrieren muss, weiss aber nicht, wie ich ihn bekommen kann.

Vielen Dank für Eure Hilfe
Heike

Re: OnSave per Makro zuweisen

Verfasst: So, 20.01.2013 19:53
von F3K Total
Hallo,
es gibt unter Extras/Anpassen/Ereignisse genau die Möglichkeit.

Gruß R

Re: OnSave per Makro zuweisen

Verfasst: Di, 22.01.2013 21:34
von Heike T
Hallo R,

danke für die Antwort.
Die Möglichkeit, dass man unter Extras/Anpassen einem Event ein Makro zuweisen kann, ist mir natürlich bekannt.
Diese Einstellungen will ich jedoch, in Abhängigkeit bestimmter, zur Laufzeit veränderbarer Parameter, von einem Makro vornehmen. Die dazu notwendigen Strukturen sind ja, wie ich schon im 1. Beitrag geschrieben habe, vorhanden. Mir ist nur nicht klar, wie ich an den "XDocumentEventBroadcaster" herankomme.

Gruß Heike

Re: OnSave per Makro zuweisen

Verfasst: Mi, 23.01.2013 11:08
von F3K Total
Hi,
dies geht:

Code: Alles auswählen

global olistener

Sub RegisterListener 
    oListener = CreateUnoListener( "DocumentListener_","com.sun.star.document.XEventListener" ) 
    'ThisComponent.com_sun_star_document_XEventBroadcaster_addEventListener( oListener )
    ThisComponent.addEventListener( oListener )
End Sub
 
Sub RemoveListener
    ThisComponent.removeEventListener( oListener )
End Sub
  
Sub DocumentListener_notifyEvent( o as object )
    if o.EventName = "OnSave" then msgbox "Speichern"
end sub
 
Sub DocumentListener_disposing()
End Sub
Gruß R

Re: OnSave per Makro zuweisen

Verfasst: Do, 24.01.2013 10:30
von Heike T
Hi R,

vielen Dank, das Beispiel funktioniert!
Das heisst, ich muss immer eine Komponente geöffnet haben (das Makro soll bereits bei Programmstart ausgeführt werden).

Heike