End Property
Рассмотрим данную процедуру подробнее. Во-первых, поскольку существует процедура PropertyLet,можно устанавливать свойство Name, так как данное свойство отображается вне модуля. Разработчик мог бы присвоить этому свойству следующее значение:
cUser.Name = "James"
ЗначениеJames, передаваемое в процедуру свойства, сохраняется в переменнойUserName. Процедура Property Let принимает значение переменнойUserName (James) и записывает его в приватной переменной модуляmstrName. Рассматриваемая процедура передает один параметр, хотя на самом деле процедуры свойств могут передавать много параметров. Значение свойства может быть получено только в том случае, когда существует процедураProperty Get.
Процедура Property Get
ПроцедураProperty Get позволяет получить значение свойства. Если не нужно, чтобы другие пользователи могли получить значение свойства, не следует включать операторProperty Get. ОператорProperty Get получает значение, хранящееся в приватной переменной, и возвращает его в качестве значения свойства. Приведенный ниже пример представляет собой операторProperty Get для свойстваName объекта cUser:
Public Property Get Name () as String
' Получение значения, записанного в приватной переменной (mstrName),
' и запись его в значение свойства.
Name = mstrName
End Property
Пользователь легко может получить значение свойства (если существует выражениеProperty Get),воспользовавшись следующим кодом:
MsgBox cUser.Name
СОВЕТ
Тип данных процедуры Property Letдолжен быть таким же, как и для процедуры Property Get. Например, Property Let для свойства Name принимает строковый аргумент. Таким образом, процедура Property Get также должна воз- вращать строковый тип данных.
Процедура Property Set
ПроцедураProperty Set позволяет создать процедуру свойства, в ходе которой устанавливается ссылка на объект. При присваивании объекта в процедуреProperty Set используется ключевое слово Set.
В данном примере используется объектcForm. ОбъектcForm содержит свойствоForm, которое должно быть передано как объектForm. Код в модуле классаcForm приведен ниже:
Option Compare Database
' Объявление приватной переменной на уровне модуля.
Private mobjForm As Form
Public Property Get Form() As Variant
' Получение объекта, скрытого в приватной переменной (mobjForm) ,
' и запись его в значение свойства.
Set Form = mobjForm
End Property