Основы офисного программирования и язык VBA


Реальные объекты и инициирование событий


Остался заключительный штрих в завершение разговора о том, как создаются классы и как ведется работа с объектами, реагирующими на события. Нужно еще рассказать о создании реальных объектов, двойники которых описаны в специальном модуле класса, в нашем примере - в классе Личности. Эти реальные объекты, обычно, находятся в стандартном модуле. В какой -то момент своей жизни, как правило, в самом начале появления, они связываются с двойниками и после этого могут реагировать на события. События инициируются в процессе работы с этими объектами, при вызове некоторых из их методов. Какие из методов класса зажигают события, - этот вопрос решается при проектировании класса, а в какой момент метод будет вызываться, - это прерогатива пользователя, работающего с объектами.

Для класса Личность мы уже описали методы, зажигающие события. Поэтому нам осталось только привести описание стандартного модуля Примеры, в котором ведется работа с двумя объектами, названными FriendOne и FriendTwo:

Option Explicit 'Модуль Примеры Public FriendOne As New Личность Public FriendTwo As New Личность Public FOne As New Личности

Public Sub Знакомство() 'Вызывается конструктор с параметрами 'и происходит знакомство с объектами FriendOne.InitPerson FN:="Станислав", LN:="Федотов", _ DOB:="21.05.39" FriendTwo.InitPerson FN:="Катя", LN:="Павлова", _ DOB:="22.03.79" FriendOne.PrintPerson FriendTwo.PrintPerson FriendOne.SayWhoIs FriendTwo.SayWhoIs 'Связывание с двойниками. 'Теперь объекты могут реагировать на события! FOne.Connect End Sub

Public Sub CallEvents() Dim DOB As Date

'Вызов методов приведет к возникновению событий! 'При замене фамилии возникнет событие ИзменениеФамилии 'Заметьте, не всегда фамилия будет изменена! FriendOne.ВашаФамилия = "Фидотов" FriendTwo.ВашаФамилия = "Волконская"

'При попытке узнать дату рождения 'может быть вызван обработчик события ДеньРождения. DOB = FriendOne.ВашаДатаРождения DOB = FriendTwo.ВашаДатаРождения FriendOne.PrintPerson FriendTwo.PrintPerson End Sub




Начало  Назад  Вперед



Книжный магазин