Разрешете JavaScript в браузъра, за да се показват страниците от помощта на LibreOfficeDev.

Оператор Property

Свойствата, наричани още полета или атрибути, характеризират даден обект или фрагмент информация. Свойствата могат да се използват за управление на достъпа до данни. В тях обикновено се включват инструкции, изпълнявани при задаване или четене на свойството. Кодът може да бъде както просто присвояване, така и сложни зависими подпрограми. Чрез методите Get, Let и Set може да се налагат условия за валидност на свойствата.

warning

Този оператор изисква Option Compatible да предхожда изпълнимия програмен код в модула.


Синтаксис:

Диаграма на оператора Property Get


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

Диаграма на оператора Property Set


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

Параметри:

name: името на свойството.

argument: стойност, която да бъде предадена на зададената с оператора Property подпрограма за присвояване.

note

Задаваните с оператора Property функции за присвояване обикновено използват единствен аргумент. Допускат се и по няколко аргумента.


фрагмент argument

фрагмент „аргумент“


      {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}
    
Параметри

Optional: аргументът не е задължителен.

ByRef: аргументът се предава по адрес. ByRef се подразбира.

ByVal: аргументът се предава по стойност. Стойността му може да се променя от извиканата подпрограма.

char: знак за деклариране на тип.

typename: име на примитивен тип данни. Могат да се задават и типове, дефинирани в библиотека или модул.

= expression: задава подразбирана стойност за аргумента, съответстваща на декларирания му тип. Всеки аргумент с указана стойност по подразбиране трябва да е придружен с Optional.

ParamArray: използвайте ParamArray, когато броят на параметрите е неопределен. Типичен пример са дефинираните от потребителя функции за Calc. Употребата на ParamArray трябва да е ограничена до последния аргумент на подпрограмата.

tip

Използването на ParamArray или = expression изисква поставянето на Option Compatible преди изпълнимия програмен код на модула.


warning

Когато се използва Option VBASupport 1, аргументите с Optional и без подразбирана стойност (= expression) се инициализират според своя тип данни, освен ако е Variant.


фрагмент typename

фрагмент „примитивни типове данни“


      {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}
    
фрагмент char

знаци за деклариране на тип


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

Примери


      Option Compatible
      Sub Main
          ProductName = "Office"
          Print ProductName ' показва "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

При отсъствието на Property Let или Property Set, Property Get позволява задаване на защитена информация, която не може да бъде променена случайно от външен модул:



      Option Compatible
      Public Property Get PathDelimiter As String ' Променлива само за четене
          Static this As String
          If this = "" Then : Select Case GetGuiType()
              Case 1 : this = ";" ' Windows
              Case 4 : this = ":" ' Linux или macOS
              Case Else : Error 423 ' Недефинирано свойство или метод: PathDelimiter
          End Select : End If
          PathDelimiter = this
      End Property ' PathDelimiter само за четене
      
      Sub Main
          PathDelimiter = "a sentence" ' Не прави нищо
      End Sub
      
note

Използвайте Let или Set, когато боравите с услуги на 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