Tartalom

# Property Statement

A tulajdonság, más néven mező vagy attribútum, egy adott objektumot vagy információt jellemez. A tulajdonságok az adatokhoz való hozzáférés szabályozására használhatók. Gyakori, hogy a tulajdonságok beállításakor vagy olvasásakor utasításokat is tartalmaznak. A kód az egyszerű hozzárendeléstől az összetett, kontextusfüggő rutinokig terjedhet. A Get, Let vagy Set hozzáférők használata szükség esetén kikényszeríti a tulajdonságok konzisztenciáját.

This statement requires Option Compatible to be placed before the executable program code in a module.

### Szintaxis:

             [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

### Paraméterek:

name: The property name.

argument: Value to be passed to the Property setter routine.

Property setters often use a single argument. Multiple arguments are equally accepted.

##### argument fragment

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

##### Paraméterek

Optional: The argument is not mandatory.

ByRef: The argument is passed by reference. ByRef is the default.

ByVal: The argument is passed by value. Its value can be modified by the called routine.

char: Type declaration character.

typename: Primitive data type name. Library or module defined types can also be specified.

= expression: Specify a default value for the argument, matching its declared type. Optional is necessary for each argument specifying a default value.

ParamArray: Use ParamArray when the number of parameters is undetermined. A typical scenario is that of a Calc user-defined function. Using ParamArray should be limited to the last argument of a routine.

UsingParamArray or = expression require Option Compatible to be placed before the executable program code in a module.

When using Option VBASupport 1, Optional arguments with no default value (= expression) are initialized according to their data type, except if Variant.

##### typename fragment

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

##### char fragment

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

## Példák

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

In the absence of Property Let or Property Set, Property Get helps define protected information, which can not be accidently altered by a foreign module:

          Option Compatible
          Public Property Get PathDelimiter As String ' Read-only variable
              Static this As String
              If this = "" Then : Select Case GetGuiType()
                  Case 1 : this = ";" ' Windows
                  Case 4 : this = ":" ' Linux or macOS
                  Case Else : Error 423 ' Property or method not defined: PathDelimiter
              End Select : End If
              PathDelimiter = this
          End Property ' read-only PathDelimiter

          Sub Main
              PathDelimiter = "a sentence" ' does nothing
          End Sub

Use Let or Set when handling UNO services or class objects:

          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

Kapcsolódó témakörök

Subroutines basics

Using Procedures, Functions and Properties

Function Statement

Sub Statement

End, Exit statements

Option ClassModule Statement

Option Compatible Statement