Nápověda Collabora Office 24.04
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.
[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
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ů.
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' zobrazí "Collabora Office"
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