Udtrykket Property (Egenskab)

En egenskab, også kaldet felt eller attribut, kendetegner et givet objekt eller en information. Egenskaber kan bruges til at kontrollere tilgang til data. Det er almindelig brug at medtage instruktioner ved egenskabernes sætte- eller læsetidspunkt. Kode kan variere fra simpel tildeling til komplekse kontekstafhængige rutiner. Med accessorerne Get, Let eller Set forstærkes egenskabernes konsistens om nødvendigt.

warning

Dette udtryk kræver, at Option Compatible er placeret foran den eksekverbare programkode i et modul.


Syntaks:

diagram over udtrykket Property get


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

diagram over udtrykket Property Set


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

Parametre:

name: Egenskabens navn.

argument: værdi, der skal overføres til sætte-rutinen Property.

note

Property-sættere bruger ofte et enkelt argument. Flere argumenter accepteres ligeledes.


argumentfragment

argument-fragment


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

Optional: Argumentet er ikke obligatorisk.

ByRef: Argumentet overføres ved reference. ByRef er standarden.

ByVal: Argumentet overføres ved værdi. Dets værdi kan ændres af den kaldte rutine.

char: Typeerklærings-tegn.

typename: Primitivt datatypename. Der kan også angives biblioteker eller moduler, der er defineret som typer.

= expression: Angiv standardværdi til argumentet, der matcher dets erklærede type. Optional er nødvendig for ethvert argument, der angiver en standardværdi.

ParamArray: Brug ParamArray, når antallet af parametre er ubestemt. Et typisk scenarie er en brugerdefineret Calc-funktion. Brug af ParamArray bør begrænses til den sidste parameter i en rutine.

tip

Brug af ParamArray eller = expression kræver, at Option Compatible er placeret foran den eksekverbare programkode i modulet.


warning

Under brug af Option VBASupport 1 initialiseres Optional-argumenter uden nogen standardværdi (= expression) efter deres datatype, undtagen hvis den er Variant.


typenavn-fragment

primitivt datatype-fragment


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

typeerklærings-tegn


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

Eksempler


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

I fravær af egenskaben Let eller egenskaben Set, hjælper egenskaben Get med at definere beskyttet information, som kan ændres tilfældigt af et fremmed modul:



      Option Compatible
      Public Property Get PathDelimiter As String ' Skrivebeskyttet variabel
          Static this As String
          If this = "" Then : Select Case GetGuiType()
              Case 1 : this = ";" ' Windows
              Case 4 : this = ":" ' Linux eller macOS
              Case Else : Error 423 ' Egenskab eller metode ikke defineret: PathDelimiter
          End Select : End If
          PathDelimiter = this
      End Property ' skrivebeskyttet PathDelimiter
      
      Sub Main
          PathDelimiter = "a sentence" ' gør intet
      End Sub
      
note

Brug Let eller Set, når du håndterer UNO-tjenester eller klasseobjekter:



      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
      

Støt os venligst!