Visual Basic 6. Руководство разработчика

       

Инициализация элемента управления и его свойств


Для этих целей можно использовать два события -

Initialize и InitProperties. Событие InitProperties предназначено для задания свойствам начальных значений.

До сих пор за нас это делал мастер интерфейса пользователя ActiveX. Событие Initialize может использоваться для выполнения кода инициализации, который не использует свойства. Если попытаться задать значение свойства или выполнить какое-либо действие на элементе управления (например, вывести Title на элементе управления оператором UserControl. Print "Control"), то будет выдано следующее сообщение об ошибке:

Object Required

Объект UserControl еще не существует. Именно поэтому оператор:

UserControl.Print "Control"

работает только тогда, когда находится внутри других событий, но не внутри события Initialize.

Что же можно сделать из кода этого события? Очень немного. Можно присвоить начальные значения закрытым переменным элемента управления, но нельзя обращаться к свойствам элемента управления и даже к объекту Ambient.

Больший интерес представляет событие InitProperties, которое Происходит после того, как создан элемент управления. Следует только помнить, событие Initialize имеет место каждый раз, когда происходит переключение между режимом конструирования и выполнения, но событие InitProperties за ним не следует.

Совет

Событие InitProperties происходит тогда, когда элемент управления создается и по­мещается на контейнер первый раз. После этого роль события InitProperties в цикле жизни элемента управления берет на себя событие ReadProperties. При изменении значения некоторых свойств элемента управления для Visual Basic бессмысленно сбрасывать эти свойства в их начальные значения. Вместо этого, он считывает их из Property Bag при вызове события ReadProperties.

В событии InitProperties можно вставить код инициализации, который управляет внешним видом "новорожденного" элемента управления. Например, можно определить, что случится, если пользователь помещает элемент управления на форму с помощью двойного щелчка на пиктограмме вместо перетягивания элемента управления на форму. Когда Visual Basic помещает экземпляр элемента управления на форму, он уже имеет некоторый размер (который одинаков для всех элементов управления). Если элемент управления содержит длинный заголовок, геометрическую фигуру или любой другой элемент, который должен быть виден полностью, можно откорректировать начальный размер элемента управления с помощью нескольких операторов:


UserControl.Width = 2400

UserControl.Height = 1200

При помещении элемента управления на форму с помощью двойного щелчка на его пиктограмме его начальный размер будет равен 2400 на 1200 твипов.

Объекты Extender и Ambient также доступны из процедуры InitProperties. Заголовок на элементе управления можно отобразить тем же шрифтом, что и у контейнера, следующим образом.

Set Font = Ambient.Font

UserControl.Print "FabControl"

Эти две строки отображают строку

"FabControl" шрифтом контейнера в верхнем левом углу элемента управления. Кроме того, шрифт элемента управления также будет первоначально установлен равным шрифту формы.

Примечание

Заголовок "FabControl" появится на новом экземпляре элемента управления только в том случае, если свойство AutoRedraw установлено в True. Элемент управления создается "за кулисами" и реально отображается только после того, как весь код инициа­лизации будет выполнен. Если свойство AutoRedraw элемента управления равно False, строка будет первоначально напечатана на элементе управления, но когда элемент управления отображается, эта строка не является частью растрового изобра­жения (вспомните гл. 6) и не будет перерисовываться.


Содержание раздела