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

# Πρόταση Property

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

Αυτή η πρόταση απαιτεί η Option Compatible να τοποθετηθεί πριν το εκτελέσιμο κώδικα προγράμματος σε ένα άρθρωμα.

### Σύνταξη:

             [Private | Public] Property Get name[char | As typename]
             End Property

             [Private | Public] Property [Let | Set] name[char] [([Optional [ByRef | ByVal]]value[char | As typename])] [As typename]
             End Property

### Παράμετροι:

name: Το όνομα της ιδιότητας.

argument: Η τιμή που θα περάσει στη ρουτίνα ορισμού (setter routine) της Property.

Οι ορισμοί της Property χρησιμοποιούν συχνά ένα μοναδικό όρισμα. Εξίσου αποδεκτά γίνονται και πολλαπλά ορίσματα.

##### τμήμα ορίσματος

          {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}

##### Παράμετροι

Optional: Το όρισμα δεν είναι υποχρεωτικό.

ByRef: Το όρισμα περνιέται με αναφορά. Το ByRef είναι η προεπιλογή.

ByVal: Το όρισμα περνιέται κατά τιμή. Η τιμή του μπορεί να τροποποιηθεί από τη ρουτίνα που καλεί.

char: Χαρακτήρας δήλωσης τύπου.

typename: Όνομα τύπου πρωτογενών δεδομένων. Μπορούν επίσης να καθοριστούν τύποι που καθορίζονται από βιβλιοθήκη ή άρθρωμα.

= expression: Καθορίστε μια προεπιλεγμένη τιμή για το όρισμα, που συμφωνεί με τον δηλωμένο τύπο του. Το Optional είναι απαραίτητο για κάθε όρισμα καθορίζοντας μια προεπιλεγμένη τιμή.

ParamArray: Χρησιμοποιήστε ParamArray όταν ο αριθμός των παραμέτρων είναι απροσδιόριστος. Μια τυπική εκδοχή είναι αυτή μιας συνάρτησης Calc του χρήστη. Η χρήση του ParamArray πρέπει να περιοριστεί στο τελευταίο όρισμα μιας ρουτίνας.

Η χρήση της ParamArray ή της = expression απαιτεί η Option Compatible να τοποθετηθεί πριν τον εκτελέσιμο κώδικα του προγράμματος σε ένα άρθρωμα.

Κατά τη χρήση της Option VBASupport 1, Optional ορίσματα χωρίς προεπιλεγμένη τιμή (= expression) αρχικοποιούνται σύμφωνα με τον τύπο των δεδομένων τους, εκτός από Variant.

##### τμήμα ονόματος τύπου

          {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}

##### τμήμα χαρακτήρα

          { % | & | ! | # | $ | @ }

## Παραδείγματα

          Option Compatible
          Sub Main
              ProductName = "Office"
              Print ProductName ' εμφανίζει "LibreOffice"
          End Sub

          Private _office As String
          Property Get ProductName As String
              ProductName = _office
          End Property
          Property Let ProductName(value As String)
              _office = "Libre"& value
          End Property

Απουσία των ιδιοτήτων Let ή Set, η ιδιότητα Get βοηθά στον καθορισμό προστατευμένων πληροφοριών, που δεν μπορούν να αλλαχθούν τυχαία από ένα ξένο άρθρωμα:

          Option Compatible
          Public Property Get PathDelimiter As String ' μεταβλητή μόνο για ανάγνωση
              Static this As String
              If this = "" Then : Select Case GetGuiType()
                  Case 1 : this = ";" ' Windows
                  Case 4 : this = ":" ' Linux ή macOS
                  Case Else : Error 423 ' Μη ορισμένη ιδιότητα ή μέθοδος: PathDelimiter
              End Select : End If
              PathDelimiter = this
          End Property ' PathDelimiter μόνο για νάγνωση

          Sub Main
              PathDelimiter = "a sentence" ' δεν κάνει τίποτα
          End Sub

Χρησιμοποιήστε Let ή Set κατά τη διαχείριση υπηρεσιών UNO ή αντικειμένων κλάσης:

          Option Compatible
          Sub Main
              'Set anObject = CreateUnoService( "com.sun.star.frame.Desktop" )
              anObject = CreateUnoService( "com.sun.star.frame.Desktop" )
              Print anObject.SupportedServiceNames(0) ' displays "com.sun.star.frame.Frame"
          End Sub

          Property Get anObject As Object
              Set anObject = _obj
          End Property

          Private _obj As Object

          'Property Set anObject(value As Object)
              'Set _obj = value.CurrentFrame
          'End Property
          Property Let anObject(value As Object)
              Set _obj = value.CurrentFrame
          End Property

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

Προτάσεις End, Exit

Χρήση διαδικασιών και συναρτήσεων

Πρόταση επιλογής ClassModule

Πρόταση συμβατής επιλογής