Pomoc Collabora Office 24.04
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.
[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: 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.
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' wyświetla "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
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