Πρόταση Property

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

warning

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


Σύνταξη:

Διάγραμμα πρότασης Property Get


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

Διάγραμμα πρότασης Property Set


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

Παράμετροι:

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

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

note

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


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

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


      {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}
    
Παράμετροι

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

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

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

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

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

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

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

tip

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


warning

Κατά τη χρήση της 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
      
tip

Απουσία των ιδιοτήτων 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
      
note

Χρησιμοποιήστε 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
      

Παρακαλούμε, υποστηρίξτε μας!