udtrykket Egenskab
En egenskab, også kaldet felt eller attribut, karakteriserer et givet objekt eller en oplysning. Egenskaber kan bruges til at kontrollere adgang til data. Det er almindelig skik at medtage instruktioner, når egenskaber sættes eller læses. Koden kan variere fra enkel tildeling til komplekse kontekstafhængige rutiner. Brug af adgangsgiverne Get, Let eller Set gennemtvinger egenskabernes consistens, når det er nødvendigt.
Dette udtryk kræver, at Option Compatible i modulet er placeret foran den programkode, der kan udføres.
[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: Egenskabens navn
argument: Værdi, der skal overføres til rutinen Property Set.
Property settere bruger ofte et enkelt argument. Flere argumenter accepteres ligeledes.
Eksempler
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' viser "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
I fravær af Property Let eller Property Set, hjælper Property Get med at definere beskyttet information, som ikke må ændres utilsigtet af et fremmed modul:
Option Compatible
Public Property Get PathDelimiter As String ' Skrivebeskyttet variabel
Static this As String
If this = "" Then : Select Case GetGuiType()
Case 1 : this = ";" ' Windows
Case 4 : this = ":" ' Linux eller macOS
Case Else : Error 423 ' Egenskab eller metode ikke defineret: PathDelimiter
End Select : End If
PathDelimiter = this
End Property ' skrivebeskyttet PathDelimiter
Sub Main
PathDelimiter = "a sentence" ' udretter intet
End Sub
Brug Let eller Set, når du håndterer UNO-tjenester eller klasseobjekter:
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