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