LibreOffice 24.8 Βοήθεια
Δημιουργεί ένα στιγμιότυπο ακροάσεως.
Πολλά αντικείμενα 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:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Κάθε διεπαφή ακροατή ορίζει ένα σύνολο ελεγχόμενων ονομάτων συμβάντων που σχετίζονται με αντικείμενα 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
Οι μέθοδοι ακρόασης πρέπει να εφαρμόζονται πάντα για να αποφευχθούν σφάλματα χρόνου εκτέλεσης της BASIC.
Χρησιμοποιήστε την κονσόλα βιβλιοθήκης 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