Declaração de Propriedade

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.

Ícone de aviso

Esta instrução requer que Option Compatible seja colocado antes do código executável de um módulo.


Sintaxe:

Diagrama da instrução Property Get


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

Diagrama da instrução «Property Set»


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

Parâmetros:

nome: O nome da propriedade.

argumento: Valor a ser passado à rotina setter da Propriedade.

Ícone de nota

Os setters da propriedade utilizam frequentemente um único argumento. São igualmente aceites vários argumentos.


<variável id="argumenth2">fragmento de argumento</variável>

fragmento de argumento


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

Opcional: O argumento não é obrigatório.

ByRef: O argumento é passado por referência. ByRef é o valor predefinido.

ByVal: O argumento é passado por valor. O seu valor pode ser alterado pela rotina chamada.

char: Carácter de declaração de tipo.

typename: Nome do tipo de dados primitivo. Também é possível especificar tipos definidos por bibliotecas ou módulos.

= expressão: Especifique um valor por defeito para o argumento, de acordo com o seu tipo declarado. Opcional é necessário para cada argumento ao especificar um valor por defeito.

ParamArray: Utilize ParamArray quando o número de parâmetros for indeterminado. Um cenário típico é o de uma função definida pelo utilizador no Calc. A utilização de ParamArray deve limitar-se ao último argumento de uma rotina.

Ícone da dica

A utilização de ParamArray ou = expressão requer que a Opção Compatible seja colocada antes do código executável do programa num módulo.


Ícone de aviso

Ao utilizar Option VBASupport 1, os argumentos Opcionais sem valor predefinido (= expressão) são inicializados de acordo com o seu tipo de dados, exceto se forem do tipo Variant.


fragmento typename

fragmento de tipos de dados primitivos


      {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 ' 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
      
Ícone da dica

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
      
Ícone de nota

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
      
Necessitamos da sua ajuda!

Necessitamos da sua ajuda!