Περιεχόμενα

# Συνάρτηση 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:

- 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

Σχετικά θέματα

Δημιουργία ακροατών συμβάντος

Χαρτογράφηση συμβάντων σε αντικείμενα

Δείτε επίσης Συμβάντα εγγράφου, Συμβάντα φόρμας.

Δημιουργία χειριστή διαλόγου

Ακρόαση συμβάντων εγγράφου