Ajuda do Collabora Office 24.04
Uma propriedade, também chamada de campo ou atributo, caracteriza um objeto ou parte de uma informação. Propriedades podem ser utilizadas para o controle de acesso a dados. É uso comum incluir instruções em tempo de definição e de leitura de propriedades. O código pode variar de um a simples atribuição a rotinas complexas que dependem do contexto. Utilizar os meios de acesso Get, Let ou Set reforça a consistência da propriedade quando necessário.
Esta instrução requer que a instrução Option Compatible seja colocada antes do código do programa no 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
name: o nome da propriedade.
argument: Valor a passar para a Property da rotina.
Os setters de Property em geral usam um argumento único. Também aceitam argumentos múltiplos.
Option Compatible
Sub Main
ProductName = "Office"
Print ProductName ' exibe "Collabora Office"
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 de Property Let oo Property Set, Property Get auxilia a definir informações protegidas, que não podem ser alteradas acidentalmente por um módulo estrangeiro:
Option Compatible
Public Property Get PathDelimiter As String ' variável só leitura
Static this As String
If this = "" Then : Select Case GetGuiType()
Case 1 : this = ";" ' Windows
Case 4 : this = ":" ' Linux ou macOS
Case Else : Error 423 ' Propriedade ou método indefinido: PathDelimiter
End Select : End If
PathDelimiter = this
End Property ' somente leitura PathDelimiter
Sub Main
PathDelimiter = "a sentence" ' não faz nada
End Sub
Utilize Let ou Set ao tratar serviços UNO ou objetos classes:
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