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

# Πρόταση Property

A property, also called field or attribute, characterizes a given object or piece of information. Properties can be used to control access to data. It is common use to include instructions at setting or reading time of properties. Code can vary from simple assignment to complex context dependant routines. Using Get, Let or Set accessers enforces properties' consistency when necessary.

Αυτή η πρόταση απαιτεί η 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 χρησιμοποιούν συχνά ένα μοναδικό όρισμα. Εξίσου αποδεκτά γίνονται και πολλαπλά ορίσματα.

##### argument fragment

          {[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.

##### typename fragment

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

##### char fragment

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

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

          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

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