Περιεχόμενα
Δείκτης 🔎︎

# Συνάρτηση CreateUnoListener

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

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

### Σύνταξη:

oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

### Παράδειγμα:

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

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

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

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

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

Ο ακροατής έχει τώρα εγγραφεί. Όταν ένα γεγονός ενεργοποιηθεί, ο αντίστοιχος ακροατής καλεί την κατάλληλη μέθοδο από τη διεπαφή com.sun.star.container.XContainerListener.

Η κλήση προθεμάτων στους εγγραμμένους ακροατές από τις υπορουτίνες της Basic. Το σύστημα χρόνου εκτέλεσης της Basic αναζητά τις υπορουτίνες της Basic ή τις συναρτήσεις που έχουν το όνομα "PrefixListenerMethode" και τις καλεί όταν αυτές βρεθούνε. Διαφορετικά, εμφανίζεται ένα λάθος χρόνου εκτέλεσης.

Σε αυτό το παράδειγμα, ο Listener-Interface χρησιμοποιεί τις ακόλουθες μεθόδους:

- disposing:

- Διεπαφή βάσεως ακροάσεων (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

Ένας τύπος δομών γεγονότος που περιέχει τις πληροφορίες για ένα γεγονός υπάρχει για κάθε τύπο ακροάσεων. Όταν μια μέθοδος ακροάσεων καλείται, ένα στιγμιότυπο αυτού του γεγονότος περνά στη μέθοδο ως παράμετρος. Οι μέθοδοι Basic Listener μπορούν επίσης να καλούν αυτά τα αντικείμενα γεγονότος, εφ' όσον περνούν την κατάλληλη παράμετρο στην δήλωση Sub. Παραδείγματος χάριν:

    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

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

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

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