Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1888.DOC
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
5.52 Mб
Скачать

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

Из процедур обработки событий можно менять свойства не только отдельных элементов управления, но и всего окна. В качестве примера рассмотрим динамическое изменение его размеров. Оно может понадобиться, когда на стадии проектирования были помещены на окно элементы управления, которые при запуске окна не нужны, но могут понадобиться в процессе работы пользователя в нем. Пусть в диалоговом окне Myform1 есть командная кнопка GetData со значением свойства Caption равным Получить данные, а в его нижней части расположены поля ввода Доходы и Расходы, где эти данные будут показаны. Предположим, высота всего окна (значение свойства Height) равна 150, командная кнопка GetData находится на расстоянии 10 от верхней границы окна (10 – значение свойства Тор), а поля ввода находятся внизу окна на расстоянии 110 от его верхнего края. Тогда, чтобы ненужные пока поля ввода Доходы и Расходы не попали в диалоговое окно, процедура инициализации должна установить высоту окна равной 90:

Private Sub UserForm1_Initialize()

Me.Height = 90

End Sub

После нажатия кнопки Получить данные и завершения вычислений можно восстановить высоту диалогового окна, и поля Доходы и Расходы станут видны. Эту операцию будет естественным задать в процедуре, обрабатывающей событие Click для командной кнопки:

Private Sub GetData_Click() ' Вычисление доходов и расходов ...

Me.Доходы = 1500

Me.Расходы = 1000 ' для примера

Me.Height = 150 ' восстановление высоты окна

End Sub

6.2.14. Проверка корректности данных

Одна из важных функций диалоговых окон – прием и передача данных, введенных пользователем в программу, для хранения и дальнейшей обработки. Основной вид элементов управления, предназначенных для ввода, – это поля ввода (TextBox). Для предотвращения ошибок, связанных с неверным типом введенных данных или нарушением некоторых условий, которым эти данные должны удовлетворять, следует проверять их корректность до выхода из диалогового окна. Для такой проверки подходят две процедуры: обработки выхода из поля ввода, связанная с событием Exit, и обработки события Click для командной кнопки, вызывающей закрытие диалогового окна. Пример проверки при выходе из окна будет рассмотрен выше при обсуждении автоматического перемещения фокуса.

Рассмотрим далее, как оставить поле ввода в фокусе, если введенные данные некорректны. Предположим, в диалоговом окне есть поле ввода InputData, куда пользователь должен ввести целочисленное значение – температуру воздуха в градусах по Цельсию. Пусть глобальные константы MinT и МахТ задают минимально и максимально допустимую температуру. Следующая процедура запускается при попытке покинуть поле ввода, проверяет корректность введенных данных, в случае ошибки выдает сообщение об этом и оставляет фокус на поле ввода:

Private Sub InputData_Exit (ByVal Cancel As MSForms.ReturnBoolean)

If Not IsNumeric(InputData.Text) Then

MsgBox "Ошибка ввода. Не числовые данные."

Cancel = True

Exit Sub

End If

If (MinT > InputData.Text) Or (InputData.Text > МахТ) Then

MsgBox "Ошибка ввода. Выход за границы."

Cancel = True

End If

End Sub

Присвоение аргументу Cancel значения True оставляет фокус на текущем элементе (в данном случае – в поле ввода InputData).