Savybės sakinys

Savybė, dar vadinama lauku arba atributu, apibūdina nurodytą objektą ar informacijos dalį. Savybės gali būti naudojamos prieigai prie duomenų valdyti. Paprastai naudojamas nurodymas nustatant ar skaitant savybių laiką. Kodas gali skirtis nuo paprasto priskyrimo iki sudėtingų, nuo konteksto priklausomų, paprogramių. Naudodamiesi Get, Let arba Set prieigomis, jei reikia, užtikrinamas savybių nuoseklumas.

warning

Šiam sakiniui reikia Parinčių suderinamumo, kuris turi būti modulyje prieš vykdomą programos kodą.


Sintaksė:

Savybių sakinio diagrama


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

Savybių sakinio diagrama


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

Parametrai:

name: Savybės pavadinimas.

argument: Reikšmė, kuri perduodama savybės paprogramei.

note

Property naudoja dažniausiai vieną argumentą. Daugybiniai argumentai taip pat galimi.


argumentų fragmentas

argumentų fragmentas


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

Pasirenkama: Argumentas neprivalomas.

ByRef: Argumentas perduodamas nuoroda. ByRef yra numatytasis.

ByVal: Argumentas perduodamas reikšme. Kviečiančioji paprogramė gali modifikuoti jo reikšmę.

char: Simbolinio tipo apibrėžimas.

tipo vardas: Paprastojo duomenų tipo vardas. Bibliotekos ar modulio apibrėžti tipai taip pat gali būti specifikuojami.

= reiškinys: Nurodykite numatytąją argumento reikšmę, atitinkančią apibrėžtą tipą.Optional būtina nurodyti kiekvienam argumentui parenkant numatytąją reikšmę.

ParamArray: Naudokite ParamArray, kai parametrų skaičius nenusakytas. Pavyzdys yra „Calc“ vartotojo aprašyta funkcija. Naudojamas ParamArray turi būti taikomas paskutiniam paprogramės argumentui.

tip

NaudojantParamArray arba = reiškinys būtina modulyje prieš vykdomos programos kodą įdėti Parinkties suderinamumas.


warning

Kai naudojama Option VBASupport 1 Pasirinktinai, tai argumentai, neturintys numatytųjų reikšmių, (= expression) inicinializuojami pagal jų duomenų tipą, išskyrus esant Variantas.


tipo vardo fragmentas

paprastųjų duomenų tipų fragmentas


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

simbolinio tipo apibrėžimas


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

Pavyzdžiai


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

Jei nėra savybės Let arba savybės Set, savybė Get padeda aprašyti laikomą informaciją, kurios svetimas modulis negali netyčia pakeisti:



      Option Compatible
      Viešoji savybė „PathDelimiter As String“ tik skaitymui kintamasis
          Static this As String
          If this = "" Then : Select Case GetGuiType()
              Case 1 : this = ";" ' Windows
              Case 4 : this = ":" ' Linux arba macOS
              Case Else : Error 423 ' Savybė arba metodas neapibrėžtas: PathDelimiter
          End Select : End If
          PathDelimiter = this
      End Property ' tik skaityti PathDelimiter
      
      Sub Main
          PathDelimiter = "sakinys" ' nieko nedaro
      End Sub
      
note

Naudokite Let arba Set, kai apdorojate UNO paslaugas arba klasių objektus:



      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
      

Paremkite mus!