Συνάρτηση CreateUnoListener

Δημιουργεί ένα στιγμιότυπο ακροάσεως.

Πολλά αντικείμενα Uno σάς επιτρέπουν να καταχωρείτε ακροατές με αποκλειστικές διεπαφές ακροατών. Αυτό επιτρέπει την ακρόαση για συγκεκριμένα συμβάντα και την κλήση της κατάλληλης μεθόδου ακροατή. Η συνάρτηση CreateUnoListener ορίζει μια διεπαφή ακροατή που σχετίζεται με ένα αντικείμενο UNO. Η διεπαφή ακροατή στη συνέχεια δεσμεύεται στο συσχετισμένο αντικείμενο της.

Σύνταξη:


    CreateUnoListener( Prefix As String, Typename As String) As Object

Παράμετροι:

Prefix>: Ένα πρόθεμα κειμένου που χρησιμοποιείται στις υπορουτίνες BASIC που χειρίζονται συμβάντα.

Typename: Ένα πλήρως πιστοποιημένο όνομα διεπαφής ακροατή UNO.

Επιστρεφόμενη τιμή:

Η υπηρεσία UNO που αντιστοιχεί στο όνομα διεπαφής ακροατή Typename, αλλιώς τιμή Null.

Παράδειγμα:

Το ακόλουθο παράδειγμα ακούει συμβάντα που συμβαίνουν για ένα αντικείμενο βιβλιοθήκης BASIC.


Dim oListener As Object
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )

Η μέθοδος CreateUnoListener απαιτεί δύο παραμέτρους. Η πρώτη είναι Prefix και εξηγείται λεπτομερώς παρακάτω. Η δεύτερη παράμετρος Typename είναι το πλήρως αναγνωρισμένο όνομα της διεπαφής ακροατή.

Κάθε ακροατής πρέπει να είναι εγγεγραμμένος στη δυνατότητα εκπομπής του LibreOffice. Αυτό εκτελείται δεσμεύοντας κάθε ακροατή στο συσχετισμένο αντικείμενο του. Οι μέθοδοι δέσμευσης ακολουθούν πάντα το μοτίβο 'addFooListener', όπου το 'Foo' είναι ο τύπος αντικειμένου της διεπαφής ακροατή, χωρίς το 'X'. Σε αυτό το παράδειγμα, η μέθοδος addContainerListener καλείται για την εγγραφή του XContainerListener:


Dim oLib As Object
oLib = BasicLibraries.Library1 ' Η Library1πρέπει να υπάρχει!
oLib.addContainerListener( oListener ) ' Καταχώριση του ακροατή

Ο ακροατής είναι πλέον εγγεγραμμένος. Όταν συμβαίνει ένα συμβάν, ο ενεργός ακροατής καλεί την κατάλληλη μέθοδο που ορίζεται στη διεπαφή com.sun.star.containerL.Xistener.

Οι καταχωρημένες υπορουτίνες BASIC βάσει συμβάντων απαιτούν τη χρήση ενός καθορισμένου Prefix. Το σύστημα χρόνου εκτέλεσης BASIC αναζητά υπορουτίνες ή συναρτήσεις που φέρουν το όνομα 'Prefix+ListenerMethod' και τις καλεί όταν βρεθούν. Διαφορετικά, παρουσιάζεται σφάλμα χρόνου εκτέλεσης.

Σε αυτό το παράδειγμα, η διεπαφή com.sun.star.container.XContainerListener ορίζει τις ακόλουθες μεθόδους:

μέθοδος

περιγραφή

disposing

Διεπαφή base com.sun.star.lang.XEventListener για όλες τις διεπαφές ακροατών

elementInserted

Μέθοδος της διεπαφής com.sun.star.container.XContainerListener

elementRemoved

Μέθοδος της διεπαφής com.sun.star.container.XContainerListener

elementReplaced

Μέθοδος της διεπαφής com.sun.star.container.XContainerListener


Το 'ContListener_' που χρησιμοποιείται σε αυτό το παράδειγμα υποδηλώνει ότι οι ακόλουθες υπορουτίνες πρέπει να υλοποιηθούν στη BASIC:

Κάθε διεπαφή ακροατή ορίζει ένα σύνολο ελεγχόμενων ονομάτων συμβάντων που σχετίζονται με αντικείμενα Uno. Όταν συμβαίνει ένα συμβάν, αποστέλλεται στη μέθοδο ως παράμετρος. Οι μέθοδοι συμβάντων BASIC μπορούν επίσης να καλούν η μία την άλλη, αρκεί η κατάλληλη παράμετρος να περάσει στη δήλωση Sub. Για παράδειγμα:


Sub ContListener_disposing( oEvent As com.sun.star.lang.EventObject )
    MsgBox "disposing"
End Sub
 
Sub ContListener_elementInserted( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox oEvent.Source.' "elementInserted"
End Sub
 
Sub ContListener_elementRemoved( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox "elementRemoved"
End Sub
 
Sub ContListener_elementReplaced( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox "elementReplaced"
End Sub

Δεν χρειάζεται να συμπεριληφθεί η παράμετρος του αντικειμένου συμβάντος όταν δεν χρησιμοποιείται:


' Ελάχιστη υλοποίηση της διάθεσης Sub
Sub ContListener_disposing
End Sub
warning

Οι μέθοδοι ακρόασης πρέπει να εφαρμόζονται πάντα για να αποφευχθούν σφάλματα χρόνου εκτέλεσης της BASIC.


tip

Χρησιμοποιήστε την κονσόλα βιβλιοθήκης ScriptForge όταν το IDE της BASIC δεν είναι εύκολα προσβάσιμο, δηλαδή κατά την επεξεργασία συμβάντων. Χρησιμοποιήστε τη μέθοδο DebugPrint για να προσθέσετε τυχόν σχετικές πληροφορίες στην κονσόλα. Οι καταχωρήσεις της κονσόλας μπορούν να απορριφθούν σε ένα αρχείο κειμένου ή να απεικονιστούν σε ένα παράθυρο διαλόγου. Χρησιμοποιήστε την ενότητα Trace της βιβλιοθήκης Access2Base ως εναλλακτική



   Sub SF_Trace
      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      svc = CreateScriptService("ScriptForge.Exception")
      svc.Console modal:=False
      svc.DebugPrint("Lorem", "Ipsum", "...")
   End Sub ' SF_Trace
   
   Sub A2B_Trace
      GlobalScope.BasicLibraries.LoadLibrary("Access2Base")
      Access2Base.Trace.DebugPrint("Lorem", "Ipsum", "...")
      Access2Base.Trace.TraceConsole()
   End Sub ' A2B_Trace

Παρακαλούμε, υποστηρίξτε μας!