LibreOffice 7.3 Súgó
Létrehoz egy figyelőpéldányt.
Számos Uno-felület teszi lehetővé figyelők regisztrálását egy speciális figyelőfelületen. Ennek segítségével figyelhet adott eseményeket, és meghívhatja a megfelelő figyelőmetódust. A CreateUnoListener függvény vár a meghívott figyelőfelületre, majd átadja a felületet egy objektumnak, amelyet a felület támogat. Az objektum ezután a figyelő regisztrálásához átadódik a metódusnak.
oListener = CreateUnoListener( Előtagnév, FigyelőfelületNév )
Az alábbi példa egy Basic-programkönyvtár-objektumon alapul.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
A CreateUnoListener metódus két paramétert vár. Az első az előtag, és ez az alábbiakban kerül részletes ismertetésre. A második paraméter a használni kívánt figyelőfelület teljes neve.
A figyelőt ezután hozzá kell adni a Broadcaster objektumhoz. Ez a figyelő hozzáadására szolgáló megfelelő metódus meghívásával történik. Ezek a metódusok mindig az „addFooListener” mintát követik, ahol a „Foo” a figyelőfelület típusa, „X” nélkül. Ebben a példában az addContainerListener metódus az XContainerListener regisztrálása érdekében kerül meghívásra:
Dim oLib
oLib = BasicLibraries.Library1 ' A Library1-nek léteznie kell!
oLib.addContainerListener( oListener ) ' A figyelő regisztrálása
A figyelő most már regisztrálva van. Egy esemény bekövetkezésekor a megfelelő figyelő meghívja a megfelelő metódust a com.sun.star.container.XContainerListener felületről.
Az előtag regisztrált figyelőket hív meg a Basic-szubrutinokból. A Basic futásidejű rendszer „PrefixListenerMethode” nevű Basic-szubrutinokat vagy -függvényeket keres, és ha talál ilyet, meghívja. Ellenkező esetben futásidejű hiba történik.
Ebben a példában a figyelőfelület a következő eljárásokat használja:
felszabadítás:
Figyelő alapfelülete (com.sun.star.lang.XEventListener): az összes Figyelőfelület alapfelülete
elementInserted:
A com.sun.star.container.XContainerListener felület metódusa
elementRemoved:
A com.sun.star.container.XContainerListener felület metódusa
elementReplaced:
A com.sun.star.container.XContainerListener felület metódusa
Ebben a példában az előtag a ContListener_. Az alábbi szubrutinokat kell megvalósítani Basicben:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Egy eseménystruktúra-típus, amely információkat tartalmaz minden figyelőtípusban létező eseménnyel kapcsolatban. A figyelőmetódus meghívásakor az esemény egy példánya paraméterként átadódik a metódusnak. A Basic-figyelőmetódusok szintén meghívhatják ezeket az eseményobjektumokat, amíg a megfelelő paramétert átadja a szubrutin-deklaráció. Például:
Sub ContListener_disposing( oEvent )
MsgBox "felszabadítás"
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
Nem szükséges megadni egy eseményobjektum paraméterét abban az esetben, ha az objektumot nem használja:
' Szubrutin felszabadításának minimális megvalósítása
Sub ContListener_disposing
End Sub
A figyelőmetódusokat mindig meg kell valósítani a Basic futásidejű hibák elkerülésének érdekében.