ole-objekt listner

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

sobby1969
Beiträge: 2
Registriert: Di, 25.05.2010 15:06

ole-objekt listner

Beitrag 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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: ole-objekt listner

Beitrag 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
Dateianhänge
Ole-Objekt mit Makro.odt
(16.26 KiB) 62-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: ole-objekt listner

Beitrag 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
Dateianhänge
StateChangeListener_ Calc_in Writer_eingebettet_embedded_.odt
(17.76 KiB) 70-mal heruntergeladen
Antworten