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

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

Перемещение фокуса на элемент управления

Только один из элементов управления формы находится в фокусе. Это означает, что этот элемент может принимать данные ввода, например, при нажатии клавиш клавиатуры или щелчки мыши. Пользователь, работающий с формой, может перемещать фокус по элементам управления в прямом направлении нажатием клавиши Tab, а в обратном - комбинацией Shift+Tab. Порядок перемещения задается на стадии проектирования окна. Программно можно установить фокус, используя метод SetFocus (Поместить в фокус) элемента, который должен оказаться в фокусе.

Рассмотрим форму, в которой есть поле ввода и командная кнопка. Нормальные действия пользователя предполагают, что он вводит информацию в поле ввода, а затем щелкает по командной кнопке. В этом случае обработчик события Click передает информацию из поля ввода переменной программе. Если же пользователь щелкнул по кнопке, забыв ввести информацию, то следует выдать предупреждающее сообщение, например, звуковой сигнал и вернуть фокус полю ввода. Вот такой сценарий и был реализован. Не будем приводить детали проектирования формы и все обработчики событий. Ограничимся только одним из них -обработчиком события щелчка командной кнопки:

Private Sub CommandButton1_Click()
	With Me
		If.TextBox1.Text = "" Then
Beep: Beep: Beep
			.TextBox1.SetFocus
		Else
			GlobeVar =.TextBox1.Text
			MsgBox GlobeVar
			.Hide
		End If
	End With
End Sub

Вот как выглядит эта простая форма ввода в процессе работы с ней:

Простая форма ввода

Рис. 12.18. Простая форма ввода

Изменение размеров диалогового окна

Из процедур обработки событий можно менять свойства не только отдельных элементов управления, но и всего окна. В качестве примера рассмотрим динамическое изменение его размеров. Ранее мы уже говорили о том, что, изменяя размеры окна, можно скрывать те или иные элементы управления. Сейчас продемонстрируем это на примере. На стадии проектирования разместим в окне элементы управления, которые при первоначальном открытии окна не должны быть видны, но должны появиться в процессе работы пользователя с этим окном. Пусть в форме Cutting есть командная кнопка "Получить данные", и поля ввода "Доходы" и "Расходы" При открытии окна поля ввода недоступны, что достигается "отсечением" нижней части формы в процедуре инициализации. Вот как выглядит обработчик события Initialize нашей формы:

Private Sub UserForm_Initialize()
	'Отсечение нижней части формы
	Me.Height = 90
End Sub

Так выглядит форма при ее открытии:

Усеченная форма в момент ее открытия

Рис. 12.19. Усеченная форма в момент ее открытия

После щелчка командной кнопки обработчик события Click восстанавливает размер, заданный при проектировании формы. Он задает также и значения скрытых ранее полей:

Private Sub CommandButton1_Click()
	With Me
		'Установить нормальную высоту формы
		.Height = 200
		'Задать значения ранее не видимых полей
		.Доходы = 1570
		.Расходы = 1500
	End With
	
End Sub

А так выглядит эта же форма после щелчка командной кнопки:

Форма Cutting со скрытыми ранее полями

Рис. 12.20. Форма Cutting со скрытыми ранее полями
полина есенкова
полина есенкова
Дмитрий Вологжин
Дмитрий Вологжин
Добрый день, прошел тесты с 1 по 9, 10 не сдал, стал читать лекцию и всё пройденные тесты с 1 по 9 сбросились, когда захотел пересдать 10 тест.