Ajuda do LibreOfficeDev 27.2
Uma propriedade, também designada por campo ou atributo, caracteriza um determinado objeto ou elemento de informação. As propriedades podem ser utilizadas para controlar o acesso aos dados. É prática comum incluir instruções no momento da definição ou da leitura das propriedades. O código pode variar desde uma simples atribuição até rotinas complexas dependentes do contexto. A utilização dos acessores Get, Let ou Set garante a consistência das propriedades quando necessário.
Esta instrução requer que Option Compatible seja colocado antes do código executável de um 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
nome: O nome da propriedade.
argumento: Valor a ser passado à rotina setter da Propriedade.
Os setters da propriedade utilizam frequentemente um único argumento. São igualmente aceites vários argumentos.
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' apresenta "LibreOfficeDev"
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
Na ausência das propriedades Let ou Set, a propriedade Get ajuda a definir informações protegidas, que não podem ser alteradas acidentalmente por um módulo externo:
Option Compatible
Propriedade pública Get PathDelimiter As String ' Variável de leitura apenas
Static this As String
If this = "" Then : Select Case GetGuiType()
Case 1 : this = ";" ' Windows
Caso 4: this = ":" ' Linux ou macOS
Caso Else: Erro 423 «Propriedade ou método não definido: PathDelimiter»
End Select : End If
PathDelimiter = this
Fim da propriedade «PathDelimiter» de leitura apenas
Sub Main
PathDelimiter = "uma frase" ' não faz nada
End Sub
Utilize Let ou Set ao lidar com serviços ou objetos de classe da 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