Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 3491 / 369 | Оценка: 4.65 / 4.29 | Длительность: 30:37:00
Специальности: Программист, Менеджер
Лекция 13:

Проектирование интерфейса. Диалоговые окна

Разработка процедур, обрабатывающих события диалогового окна и его устройств

Процедуры, обрабатывающие события, связанные с диалоговыми окнами и элементами управления, - это частный случай процедур, обрабатывающих события объектов Office 2000. С диалоговым окном (формой) и с элементом управления каждого типа связан заранее определенный набор событий, возникающих для этого объекта по инициативе пользователя или системы. Например, одно из связанных с формой событий Initialize (Инициализация) возникает при загрузке формы, а связанное с командной кнопкой (CommandButton) событие Click возникает, когда пользователь щелкает эту кнопку (или нажимает клавишу Enter, если эта кнопка определена как нажимаемая по умолчанию). Процедуры обработки событий позволяют описать поведение диалогового окна или отдельного элемента управления при наступлении того или иного события.

Чтобы перейти в окно редактора для ввода текста процедуры обработки события, щелкните дважды объект, к которому оно относится (элемент управления или свободную от элементов часть формы). Появится окно Code (Код). В раскрывающемся списке слева вверху перечислены все объекты формы; при выборе объекта в этом списке справа вверху появляются события, связанные с данным объектом. Ниже на рис. 12.10 показан список событий для командной кнопки.

События, для обработки которых процедуры уже написаны, выделены полужирным начертанием. Чтобы создать новую процедуру или отредактировать имеющуюся, нужно щелкнуть в списке соответствующее событие. На экране появится шаблон новой процедуры или текст написанной. Имя такой процедуры состоит из имени устройства или формы, за которым после подчеркивания идет имя события. Так, процедура, обрабатывающая событие Click для командной кнопки CommandButton1, называется CommandButton1_Click. Из-за такого способа именования процедур будьте осторожны при переименовании элементов управления. Если Вы сначала определили для элемента процедуры обработки событий, а затем переименовали его (изменив свойство Name ), никаких процедур обработки событий у элемента с новым именем не будет (их придется перенести с помощью редактора).

События элемента CommandButton

Рис. 12.12. События элемента CommandButton

Взгляните на процедуру обработки события Click для командной кнопки cmdClickMe диалогового окна "Цветная форма":

Private Sub cmdClickMe_Click()
	MsgBox "Поздравляю !"
	ColorForm1.TextBox1.Value = "Симпатичный, правда?"

End Sub

Эта процедура автоматически вызывается при выборе кнопки "Нажми меня" и выводит на экран поздравление, а затем заменяет название картинки в окне редактирования.

Количество свойств, методов и событий, связанных с диалоговыми окнами и элементами управления чрезвычайно велико. Более подробные сведения о них приведены при описании соответствующих объектов в следующей лекции. В этом разделе мы рассмотрим несколько типичных проблем, возникающих при проектировании процедур обработки событий.

Вызов собственного диалогового окна

Диалоговое окно нуждается в отладке. В редакторе VBA Вы видите его изображение, но управляющие элементы находятся в "замороженном" состоянии, и их реакция на действия пользователя - это реакция редактора, а не самих элементов. Диалоговое окно запускается на исполнение командой запуска процедуры или формы Запуск подпрограммы/UserForm меню Запуск редактора или нажатием клавиши F5. - Ваше диалоговое окно появится в рабочем состоянии на основной панели того приложения Office 2000, в котором оно создано.

А вызывается диалоговое окно в прикладной системе методом Show (Показать). Он позволяет выводить окно на экран в качестве реакции на выбор соответствующей команды меню или командной кнопки в другом окне и т. п. Например, диалоговое окно MyForm выводится так:

MyForm.Show

Установка начальных значений свойств элементов управления

Начальное значение (или значение по умолчанию) свойства элемента управления можно установить в процедуре, обрабатывающей событие Initialize (Инициализация) диалогового окна, содержащего данный элемент. Это событие возникает всякий раз при выводе диалогового окна на экран и запускает на выполнение процедуру без аргументов с именем ИмяОкна_Initialize. Поэтому установленные в ней значения свойств всегда будут начальными. Это не значит, что они должны быть постоянными. Значения могут зависеть от текущей даты, данных в ячейках рабочего листа Excel, некоторых записей в базе данных Access и т. п.

Давайте создадим диалоговое окно с процедурой инициализации.

  1. Создайте новое диалоговое окно и разместите в нем статический текст Label (Метка), поле ввода TextBox, окно списка ListBox и кнопку независимого выбора (флажок) CheckBox.
  2. В окне Свойства, измените их имена (свойство Name): Label - на CurrDate, TextBox - на MyText, ListBox - на lstColors, CheckBox - на chkGood, UserForm - на frmInit. Эти изменения внутренних имен элементов и окна не скажутся на его изображении в редакторе.
    Окно до инициализации

    Рис. 12.13. Окно до инициализации
  3. Дважды щелкните диалоговое окно, чтобы вызвать окно с кодом (Code). Установите в списке объектов слева вверху UserForm (по умолчанию этот объект и будет выбран при вызове окна кода) и выберите команду Initialize в списке процедур справа вверху. На экране появится шаблон процедуры инициализации диалогового окна UserForm_Initialize. Введите текст следующей процедуры.
    Private Sub UserForm_Initialize()
    	With frmInit
    		.Caption = "Окно после инициализации"    ' заголовок диалогового окна
    		.CurrDate.Caption = "Сегодня " & Format(Date, "dd/mm/yy")
    		                                         'метка - текущая дата
    		.MyText.Text = "Любимый цвет:"           'начальный текст в редакторе
    		.chkGood.Value = True                    'включение флажка
    		.chkGood.Caption = " Хороший день"       ' заголовок флажка
    		With.lstColors                           'задание элементов списка:
    			.AddItem "белый"
    			.AddItem "черный"
    			.AddItem "синий"
    			.AddItem "красный"
    			.AddItem "зеленый"
    			.AddItem "желтый"
    			.AddItem "голубой"
    			.ListIndex = 4   'выбор 5-го элемента в списке ("зеленый")
    		End With
    	End With
    
    End Sub
    Нумерация элементов массивов и коллекций, связанных с формами, начинается с 0. Поэтому, чтобы выделить при выводе окна пятый элемент в списке цветов, свойству ListIndex присвоено значение 4.
  4. Запустите диалоговое окно в отладчике. На экране оно будет выглядеть так:
    Окно после инициализации

    Рис. 12.14. Окно после инициализации
    Щелкнув кнопку Close (Закрыть) на строке заголовка окна, возвратитесь в режим проектирования.
полина есенкова
полина есенкова
Дмитрий Вологжин
Дмитрий Вологжин
Добрый день, прошел тесты с 1 по 9, 10 не сдал, стал читать лекцию и всё пройденные тесты с 1 по 9 сбросились, когда захотел пересдать 10 тест.