Ukaz Property

Lastnost (angl. property), imenovana tudi polje ali atribut (angl. field, attribute), označuje dani predmet ali informacijo. Lastnosti lahko uporabimo za nadzor dostopa do podatkov. Pogosto jih uporabljamo za vključevanje ukazov ob času določanja ali branja lastnosti. Koda lahko zajema vse od enostavne dodelitve do kompleksnih podprogramov. Z uporabo dostopnikov Get, Let in Set po potrebi uveljavljamo konsistenco lastnosti.

warning

Ta ukaz potrebuje Option Compatible, ki ga moramo vstaviti pred izvedljivo programsko kodo v modulu.


Skladnja:

Diagram ukaza Property Get

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

Diagram ukaza Property Set

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

Parametri:

ime: ime lastnosti.

Argument: vrednost, ki bo posredovana nastavljalcu Property.

note

Nastavljavci lastnosti Property pogosto uporabljajo en sam argument. Več argumentov sprejemajo enakovredno.


Fragment argumenta

Fragment argumenta

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

Optional: argument ni obvezen.

ByRef: argument je podan po sklicu. ByRef je privzeta vrednost.

ByVal: argument je podan z vrednostjo. Njegovo vrednost lahko klicana rutina spremeni.

znak-vrste: znak za deklaracijo vrste.

ime-vrste: ime vrste primitivnih podatkov. Določite ga lahko tudi v knjižnici ali modulu definirane vrste.

= izraz: Določite privzeto vrednost za argument, ki se ujema z njegovo vrsto iz deklaracije. Optional je obvezen za vsak argument, ki ima določeno privzeto vrednost.

ParamArray: uporabite ParamArray, ko število parametrov ni določeno. Tipična raba je pri uporabniško določeni funkciji programa Calc. Uporaba ParamArray je omejena na zadnji argument rutine.

tip

Uporaba ParamArray ali = izraz zahteva, da je Option Compatible postavljen pred izvedljivo programsko kodo v modulu.


warning

Ko uporabljate Option VBASupport 1, se neobvezni argumenti Optional brez privzete vrednosti (= izraz) inicializirajo glede na njihovo vrsto podatkov, razen kadar so Variant.


fragment typename

Fragment primitivnih vrst podatkov

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

Znaki za deklaracije vrste

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

Primeri

Option Compatible
Sub Main
    ProductName = "Office"
    Print ProductName ' izpiše "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

Če Property Let ali Property Set nista definirana, lahko Property Get določi zaščitene podatke, ki jih ni možno naključno spremeniti s tujim modulom:


Option Compatible
Public Property Get PathDelimiter As String ' Spremenljivka samo za branje
    Static this As String
    If this = "" Then : Select Case GetGuiType()
        Case 1 : this = ";" ' Windows
        Case 4 : this = ":" ' Linux ali macOS
        Case Else : Error 423 ' Lastnost ali metoda ni določena: PathDelimiter
    End Select : End If
    PathDelimiter = this
End Property ' PathDelimiter samo za branje

Sub Main
    PathDelimiter = "nek stavek" ' ne stori ničesar
End Sub
note

Če ravnate s storitvami ali razrednimi predmeti UNO, uporabite Let in Set:


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

Podprite nas!