Ative o JavaScript no navegador para exibir as páginas da Ajuda do LibreOfficeDev.

Instrução Property

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.

warning

Esta instrução requer que a instrução Option Compatible seja colocada antes do código do programa no módulo.


Sintaxe:

Diagrama da propriedade da instrução Get


         [Private | Public] Property Get name[char | As typename]
         End Property
      

Diagrama da propriedade da instrução Set


         [Private | Public] Property [Let | Set] name[char] [([Optional [ByRef | ByVal]]value[char | As typename])] [As typename]
         End Property
      

Parâmetros:

name: o nome da propriedade.

argument: Valor a passar para a Property da rotina.

note

Os setters de Property em geral usam um argumento único. Também aceitam argumentos múltiplos.


fragmento de argumento

fragmento de argumento


      {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}
    
Parâmetros

Optional: o argumento não é obrigatório.

ByRef: o argumento é passado por referência. ByRef é o padrão.

ByVal: o argumento é passado por valor. Seu valor pode ser modificado pela rotina chamada.

char: caractere de declaração de tipo.

typename: nome do tipo de dado primitivo. Podem ser especificados tipos definidos em bibliotecas e módulos.

= expression: especifica um valor padrão para o argumento que confere com seu tipo declarado.Optional é necessário para cada argumento que especifica um valor padrão.

ParamArray: Utilize ParamArray quando o número de parâmetros é indeterminado. Um cenário típico é de uma função definida pelo usuário no Calc. Utilizar ParamArray deveria ser limitado ao último argumento de uma rotina.

tip

Utilizar ParamArray ou = expression requer que Option Compatible seja colocada antes de um código executável num módulo.


warning

Ao utilizar Option VBASupport 1, argumentos Optional sem valor padrão (= expression) são inicializados de acordo com seus tipos de dados , com exceção de Variant.


fragmento de nome de tipo

fragmento de tipos primitivos de dados


      {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}
    
fragmento de caractere

caracteres de declaração de tipo


      { % | & | ! | # | $ | @ }
    

Exemplos


      Option Compatible
      Sub Main
          ProductName = "Office"
          Print ProductName ' exibe "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
      
tip

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
      
note

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