IBM Lotus Symphony
|
Luo kuuntelutoiminnon ilmentymän.
Monissa Uno-liittymissä voit rekisteröidä kuuntelutoimintoja erityisessä kuuntelutoimintoliittymässä. Tällä tavalla voit kuunnella tiettyjä tapahtumia ja kutsua sopivan kuuntelumenetelmän. CreateUnoListener-funktio odottaa kutsuttua kuuntelutoimintoliittymää ja välittää sitten liittymälle objektin, jota liittymä tukee. Objekti välitetään sitten menetelmälle ja kuuntelutoiminto rekisteröidään.
oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )
Seuraava esimerkki perustuu Basic-kirjaston objektiin.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
CreateUnoListener-menetelmä edellyttää kahta parametria. Ensimmäinen on etuliite ja toinen kuvataan seuraavassa. Toinen parametri on sen kuuntelutoiminnon tarkennettu nimi, jota haluat käyttää.
Sen jälkeen kuuntelutoiminto on lisättävä lähetinobjektiin. Tämä tapahtuu kutsumalla sopivaa menetelmää kuuntelutoiminnon lisäämiseksi. Nämä menetelmät noudattavat aina kaavaa "addFooListener", missä "Foo" on kuuntelutoimintoliittymän laji, ilman 'X'-merkkiä. Tässä esimerkissä kutsutaan addContainerListener-menetelmää rekisteröimään XContainerListener-kuuntelutoiminto:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1-objektin on oltava olemassa!
oLib.addContainerListener( oListener ) ' Rekisteröi kuuntelutoiminnon
Kuuntelutoiminto on nyt rekisteröity. Kun tapahtuma ilmenee, vastaava kuuntelutoiminto kutsuu sopivaa menetelmää com.sun.star.container.XContainerListener-liittymästä.
Etuliite kutsuu rekisteröityjä kuuntelutoimintoja Basic-toiminnoista. Basicin ajonaikainen järjestelmä hakee Basic-toimintoja ja -funktioita, joiden nimi on "PrefixListenerMethode", ja kutsuu niitä sitten. Muutoin ilmenee ajonaikainen virhe.
Tässä esimerkissä kuuntelutoimintoliittymä käyttää seuraavia menetelmiä:
disposing:
Kuuntelutoiminnon perusliittymä (com.sun.star.lang.XEventListener): kaikkien kuuntelutoimintoliittymien perusliittymä
elementInserted:
com.sun.star.container.XContainerListener-liittymän menetelmä
elementRemoved:
com.sun.star.container.XContainerListener-liittymän menetelmä
elementReplaced:
com.sun.star.container.XContainerListener-liittymän menetelmä
Tässä esimerkissä etuliite on ContListener_. Seuraavat toiminnot on siksi toteutettava Basicissa:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Kullekin kuuntelutoiminnon lajille on tapahtumarakennelaji, joka sisältää tietoja tapahtumasta. Kun kuuntelutoimintomenetelmää kutsutaan, tämän tapahtuman ilmentymä välitetään menetelmälle parametrina. Myös Basicin kuuntelutoimintomenetelmät voivat kutsua näitä tapahtumaobjekteja, jos asianmukainen parametri on välitetty Sub-esittelyssä. Esimerkki:
Sub ContListener_disposing( oEvent )
MsgBox "disposing"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementInserted( oEvent )
MsgBox "elementInserted"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementRemoved( oEvent )
MsgBox "elementRemoved"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementReplaced( oEvent )
MsgBox "elementReplaced"
MsgBox oEvent.Dbg_Properties
End Sub
Tapahtumaobjektin parametria ei ole tarpeen sisällyttää, jos objektia ei käytetä:
Minimitoteutus toiminnolle Sub disposing
Sub ContListener_disposing
End Sub
![]() |
Kuuntelumenetelmät on aina toteutettava Basicin ajonaikaisten virheiden välttämiseksi. |