Ukaz Property
Lastnost (angl. property), imenovana tudi polje ali atribut (angl. field, attribute), označuje dani predmet ali informacijo. Lastnosti lahko uporabimo za nadzor dostopa do podatkov. Pogosto jih uporabljamo za vključevanje ukazov ob času določanja ali branja lastnosti. Koda je lahko različna, vse od enostavne dodelitve do kompleksnih od konteksta odvisnih procedur. Z uporabo dostopnikov Get, Let in Set po potrebi uveljavljamo konsistenco lastnosti.
Ta ukaz potrebuje Option Compatible, ki ga moramo vstaviti pred izvedljivo programsko kodo v modulu.
[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
ime: ime lastnosti.
Argument: vrednost, ki bo posredovana nastavljalcu Property.
Nastavljavci lastnosti Property pogosto uporabljajo en sam argument. Več argumentov sprejemajo enakovredno.
Primeri
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' izpiše "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
Ob odsotnosti Property Let ali Property Set pomaga Property Get določiti zaščitene podatke, ki jih ni mogoče naključno spremeniti s tujim modulom:
Option Compatible
Public Property Get PathDelimiter As String ' Spremenljivka samo za branje
Static this As String
If this = "" Then : Select Case GetGuiType()
Case 1 : this = ";" ' Windows
Case 4 : this = ":" ' Linux ali macOS
Case Else : Error 423 ' Lastnost ali metoda ni določena: PathDelimiter
End Select : End If
PathDelimiter = this
End Property ' PathDelimiter samo za branje
Sub Main
PathDelimiter = "nek stavek" ' ne stori ničesar
End Sub
Če ravnate s storitvami ali razrednimi predmeti UNO, uporabite Let in Set:
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