Πρόταση 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 ' εμφανίζει "Collabora Office"
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

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