Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки по программированию. Visual C++, MFC, VB, ActiveX


Служба Рассылок Subscribe.Ru

Visual C++. MFC. Уроки по программированию с сайта http://alexeev.nm.ru

Рассылка №9

Visual Basic. ActiveX. Урок 11. Событие InitProperties для ActiveX
Visual C++. ActiveX. Урок 12. Событие Initialize для ActiveX

Visual Basic. ActiveX. Урок 11. Событие InitProperties для ActiveX

Когда вы размещаете некоторый стандартный элемент на форме, то части свойств присваивается значение по умолчанию (например, высота и ширина для кнопки). Для создаваемого нами элемента это не так (пока не так). Скажем, если мы разместим на тестовой форме наш ActiveX, то его свойству Color автоматически никакого значения не присвоится:

Свойство Color

Давайте изменим эту ситуацию. Для этого воспользуемся событием InitProperties для нашего ActiveX. Пишем в него следующий код:

Private Sub UserControl_InitProperties()
  m_blnColor = Red
End Sub

Теперь при размешении на тестовой форме нашего ActiveX'а автоматически присвоится нужное свойство:

Свойство Color

При этом обратите внимание, что наш событие InitProperties воазникнет только один раз - а именно при размешении элемента на форме. При запуске программы, а также при повторном открытии проекта это событие возникать не будет. И это правильно - представьте себе, что оно возникало бы при каждом создании ActiveX'а (как вы помните, когда вы запускаете программу, то экземпляр ActiveX'а времени разработки умирает и создается новый экземпляр времени выполнения). Тогда, например, наш элемент всегда был бы красным, а это мы вовсе не хотим.

Есть и событие, которое возникает каждый раз при создании нового экземпляра ActiveX. Но об этом - в следующем уроке.

Наверх

Visual Basic. ActiveX. Урок 12. Событие Initialize для ActiveX

Если событие InitProperties для элемента ActiveX выполняеся только в момент первого создания элемента на форме, то событие Initialize имеет место каждый раз при создании экземпляра ActiveX-элемента. Говоря человеческим языком, это означает, что событие Initialize будет происходить по крайней мере в трех случаях:

Во-первых, в момент переноса ActiveX-элемента с панели элементов на форму.

Во-вторых, в момент запуска формы с ActiveX'ом.

И в-третьих, после закрытия тестовой формы и возврату к экземпляру ActiveX-элемента времени разработки.

Для того, чтобы посмотреть, как все это работает, добавьте в код нашего ActiveX следующие строки:

Private Sub UserControl_Initialize()
  Beep
End Sub

Запустите тестовый проект. В момент появления формы на экране раздастся Beep. Закройте форму. Опять вы услышите Beep (так как экземпляр ActiveX времени выполнения умер и создался экземпляр времени разработки). Создайте на форме ещё один ActiveX-элемент. Опять будет Beep. Закройте нашу группу проектов и откройте её опять. И в этом случае опять будет Beep.

Таким образом, код, помещённый в событие Initialize будет выполняться каждый раз, когда наш ActiveX создаётся.

Наверх

© Алексеев Игорь, 2001


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное