Spis treści
Indeks 🔎︎

# Instrukcja Property

Właściwość, zwana także polem lub atrybutem, charakteryzuje dany obiekt lub informację. Właściwości mogą służyć do kontrolowania dostępu do danych. Powszechne jest umieszczanie instrukcji przy ustawianiu lub odczytywaniu czasu właściwości. Kod może się różnić od prostego przypisania do złożonych procedur zależnych od kontekstu. Użycie akcesorów Get, Let lub Set wymusza spójność właściwości, gdy jest to konieczne.

Ta instrukcja wymaga umieszczenia Option Compatible przed kodem programu wykonywalnego w module.

### Składnia:

             [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

### Parametry:

name: Nazwa właściwości.

argument: Wartość, która ma zostać przekazana do procedury ustawiającej Property.

Funkcja ustawienia Property często przyjmuje pojedynczy argument. Dozwolone są jednak również argumenty wielokrotne.

##### Fragment argumentu

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

##### Parametry

Optional: Argument nie jest obowiązkowy.

ByRef: Argument jest przekazywany przez odwołanie. Wartość domyślna to WgRef.

ByVal: Argument jest przekazywany przez wartość. Jego wartość może być modyfikowana przez wywoływaną procedurę.

char: Wpisz znak deklaracji.

typename: Pierwotna nazwa typu danych. Można również określić typy zdefiniowane w bibliotece lub module.

= expression: Określ domyślną wartość argumentu, odpowiadającą zadeklarowanemu typowi. Optional jest konieczne dla każdego argumentu określającego wartość domyślną.

ParamArray: Użyj ParamArray, gdy liczba parametrów jest nieokreślona. Typowym scenariuszem jest funkcja zdefiniowana przez użytkownika programu Calc. Użycie ParamArray powinno być ograniczone do ostatniego argumentu procedury.

Używanie ParamArray lub = expression wymaga umieszczenia Option Compatible przed kodem programu wykonywalnego w module.

Podczas używania argumentów Option VBASupport 1, Optional bez wartości domyślnej (= expression) są inicjowane zgodnie z ich typem danych, z wyjątkiem sytuacji, gdy Variant.

##### Fragment Typename

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

##### Fragment znaku

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

## Przykłady

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

W przypadku braku Property Let lub Property Set, Property Get pomaga zdefiniować chronione informacje, które nie mogą zostać przypadkowo zmienione przez obcy moduł:

          Option Compatible
          Public Property Get PathDelimiter As String ' Zmienna tylko do odczytu
              Static this As String
              If this = "" Then : Select Case GetGuiType()
                  Case 1 : this = ";" ' Windows
                  Case 4 : this = ":" ' Linux lub macOS
                  Case Else : Error 423 ' Nie zdefiniowano właściwości lub metody: PathDelimiter
              End Select : End If
              PathDelimiter = this
          End Property ' PathDelimiter jest tylko do odczytu

          Sub Main
              PathDelimiter = "a sentence" ' nic nie robi
          End Sub

Użyj Let lub Set podczas obsługi usług UNO lub obiektów klas:

          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

Tematy pokrewne

Podstawy podprogramów

Korzystanie z procedur, funkcji i właściwości

Instrukcja Function

Instrukcja Sub

Instrukcje End, Exit

Instrukcja Option ClassModule

Instrukcja Option Compatible