Помощ за LibreOffice 24.8
Свойствата, наричани още полета или атрибути, характеризират даден обект или фрагмент информация. Свойствата могат да се използват за управление на достъпа до данни. В тях обикновено се включват инструкции, изпълнявани при задаване или четене на свойството. Кодът може да бъде както просто присвояване, така и сложни зависими подпрограми. Чрез методите Get, Let и Set може да се налагат условия за валидност на свойствата.
Този оператор изисква 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: името на свойството.
argument: стойност, която да бъде предадена на зададената с оператора Property подпрограма за присвояване.
Задаваните с оператора Property функции за присвояване обикновено използват единствен аргумент. Допускат се и по няколко аргумента.
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' показва "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
При отсъствието на Property Let или Property Set, Property Get позволява задаване на защитена информация, която не може да бъде променена случайно от външен модул:
Option Compatible
Public Property Get PathDelimiter As String ' Променлива само за четене
Static this As String
If this = "" Then : Select Case GetGuiType()
Case 1 : this = ";" ' Windows
Case 4 : this = ":" ' Linux или macOS
Case Else : Error 423 ' Недефинирано свойство или метод: PathDelimiter
End Select : End If
PathDelimiter = this
End Property ' PathDelimiter само за четене
Sub Main
PathDelimiter = "a sentence" ' Не прави нищо
End Sub
Използвайте Let или Set, когато боравите с услуги на 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