Obsah

# Příkaz Property

Vlastnost, označovaná také jako atribut, charakterizuje daný objekt nebo informaci. Vlastnosti lze použít k řízení přístupu k datům. Obvykle se zadávají instrukce, které se mají provést při nastavování nebo čtení vlastnosti. Může se jednat o jednoduché přiřazení i o komplexní podprogramy závisející na kontextu. Přístupové funkce Get, Let a Set v případě potřeby zajišťují, aby vlastnost zůstala konzistentní.

Tento příkaz vyžaduje, aby bylo v modulu před spustitelným programem zadáno Option Compatible.

### Syntaxe:

             [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: Název vlastnosti.

argument:Hodnota předávaná funkci pro nastavení Property.

Funkce pro nastavení Property často používá jediný argument. Povoleno je ale rovněž více argumentů.

##### Fragment argumentu

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

##### Parametry

Optional: Tento argument není povinný.

ByRef: Tento argument je předáván odkazem. Jedná se o výchozí nastavení.

ByVal: Tento argument je předáván hodnotou. Jeho hodnota může být volaným podprogramem změněna.

char: Znak deklarace typu.

typename: Název primitivního datového typu. Lze uvést také typy definované v knihovně nebo v modulu.

= expression: Určuje výchozí hodnotu argumentu, odpovídající deklarovanému typu. Každý argument s výchozí hodnotou je nutné označit jako Optional.

ParamArray: Použijte jej v případě, že není znám počet parametrů. Typickým případem jsou uživatelem definované funkce v Calcu. Použití ParamArray by se mělo omezit na poslední argument procedury.

Použití možnosti ParamArray nebo = expression vyžaduje, aby bylo před spustitelným programem v modulu zadáno Option Compatible.

Při použití volby Option VBASupport 1 se argumenty, které jsou označeny jako Optional, ale nemají výchozí hodnotu (= expression), se inicializují podle svých datových typů (kromě typu Variant).

##### Fragment názvu typu

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

##### Fragment znaku

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

## Příklady

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

V případě, že chybí Property Let a Property Set, je pomocí Property Get definováno, že informace bude chráněná a nebude možné ji z cizího modulu nedopatřením změnit:

          Option Compatible
          Public Property Get PathDelimiter As String ' proměnná pouze pro čtení
              Static this As String
              If this = "" Then : Select Case GetGuiType()
                  Case 1 : this = ";" ' Windows
                  Case 4 : this = ":" ' Linux nebo macOS
                  Case Else : Error 423 ' Vlastnost nebo metoda není definována: PathDelimiter
              End Select : End If
              PathDelimiter = this
          End Property ' PathDelimiter je pouze pro čtení

          Sub Main
              PathDelimiter = "a sentence" ' neudělá nic
          End Sub

Let nebo Set používejte při práci se službami nebo objekty tříd UNO:

          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

Související témata

Základy procedur

Použití procedur, funkcí a vlastností

Příkaz Function

Příkaz Sub

Příkazy End, Exit

Příkaz Option ClassModule

Příkaz Option Compatible