Property Statement
A property, also called field or attribute, characterizes a given object or piece of information. Properties can be used to control access to data. It is common use to include instructions at setting or reading time of properties. Code can vary from simple assignment to complex context dependant routines. Using Get, Let or Set accessers enforces properties' consistency when necessary.
Esta instrucción requiere la utilización de Option Compatible antes del código del programa en un módulo.
[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
nombre: el nombre de la propiedad.
argumento: el valor que se transmitirá a la rutina establecedora Property.
Los establecedores Property a menudo utilizan un único argumento. También se aceptan argumentos múltiples.
Ejemplos
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' muestra «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
In the absence of Property Let or Property Set, Property Get helps define protected information, which can not be accidently altered by a foreign module:
Option Compatible
Public Property Get PathDelimiter As String ' variable de solo lectura
Static this As String
If this = "" Then : Select Case GetGuiType()
Case 1 : this = ";" ' Windows
Case 4 : this = ":" ' Linux o macOS
Case Else : Error 423 ' Property or method not defined: PathDelimiter
End Select : End If
PathDelimiter = this
End Property ' PathDelimiter de solo lectura
Sub Main
PathDelimiter = "un enunciado" ' no hace nada
End Sub
Use Let or Set when handling UNO services or class objects:
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