Vsebina

# 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.

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

### Skladnja:

             [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

### Parametri:

ime: ime lastnosti.

Argument: vrednost, ki bo posredovana nastavljalcu Property.

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

##### 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.

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

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

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

##### fragment char

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

## Primeri

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

Č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

Č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

Podobne teme

Osnove podprogramov

Uporaba procedur, funkcij in lastnosti

Ukaz Function

Ukaz Sub

Ukaza End, Exit

Ukaz Option ClassModule

Ukaz Option Compatible