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 "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

Č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!