Seite 1 von 1

ole-objekt listner

Verfasst: So, 08.11.2015 09:57
von sobby1969
Hallo,

ich habe ein text Document in dem als ole-objekt eine calc tabelle eingefügt ist. Nun möchte ich wenn die calc tabelle aktiviert wird automatisch
ein Listner aktiviert wird.
Kann mir da mal jemand helfen. eventuell geht das ja über einen Eventlistener.

Danke im vorraus für eure Hilfe

Gruß Sobby

Re: ole-objekt listner

Verfasst: So, 08.11.2015 11:39
von Stephan
Muss es denn ein extra registrierter Listener sein, das Ereignis das das Objekt angeklickt wird lässt sich doch direkt unter dem Objekt abfangen (zuweisen unter Kontextmenü des Tabellenobjekts -->Objekt... -->Register "Makro")

Beispiel hängt an.


Gruß
Stephan

Re: ole-objekt listner

Verfasst: So, 08.11.2015 12:10
von F3K Total
Hi,
da mir mir nun schon die Mühe gemacht habe, möchte ich Euch eine Lösung mit StateChangeListener nicht vorenthalten.

Code: Alles auswählen

global oStateChangeListener

Sub Listener_erzeugen
    odoc = Thiscomponent
    opage = odoc.drawpage
    for i = 0 to opage.count - 1
        oshape = oPage(i)
        if oShape.Name = "CalcTabelle1" then
            oEXCOEO = oShape.ExtendedControlOverEmbeddedObject      
            oStateChangeListener = CreateUnoListener( "StateChangeListener_", "com.sun.star.embed.XStateChangeListener")
            oEXCOEO.addStateChangeListener(oStateChangeListener)
        endif
    next i
End Sub

Sub Listener_entfernen
    odoc = Thiscomponent
    opage = odoc.drawpage
    for i = 0 to opage.count - 1
        oshape = oPage(i)
        if oShape.Name = "CalcTabelle1" then
            oEXCOEO = oShape.ExtendedControlOverEmbeddedObject      
            oEXCOEO.removeStateChangeListener(oStateChangeListener)
        endif
    next i
End Sub 

Sub StateChangeListener_changingState(oEvent,nOldState,nNewState)
   '(com.sun.star.embed.EmbedStates.UI_ACTIVE)LOADED = 0,RUNNING = 1,ACTIVE = 2,INPLACE_ACTIVE = 3,UI_ACTIVE = 4
   if nNewState = 4 then
       Print "Calc wechselt in den Bearbeitungsmodus"
   else
       Print "Calc verläßt den Bearbeitungsmodus"
   endif
End Sub

Sub StateChangeListener_stateChanged(oEvent,nOldState,nNewState)
   '(com.sun.star.embed.EmbedStates.UI_ACTIVE)LOADED = 0,RUNNING = 1,ACTIVE = 2,INPLACE_ACTIVE = 3,UI_ACTIVE = 4
   if nNewState = 4 then
       Print "Calc im Bearbeitungsmodus"
   else
       Print "Calc nicht mehr im Bearbeitungsmodus"
   endif
End Sub

Sub StateChangeListener_disposing
end sub
Gruß R