Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_6.doc
Скачиваний:
97
Добавлен:
01.12.2018
Размер:
3.77 Mб
Скачать

3.5.6. Оператор DoEvents.

Экранные операции имеют низкий приоритет в сравнении с операциями вычислений. Поэтому, например, если работает цикл, то программа не будет реагировать на инициируемые вами события. Но иногда требуется задержать вид экрана на некоторое время (или до некоторого события), чтобы проанализировать промежуточные данные на экране. Это можно сделать с помощью функции MsgBox. Однако, ее окно закрывает часть данных на экране и приходится это окно перемещать по форме, чтобы просматривать данные. Это неудобно. Избежать этого можно с помощью оператора DoEvents. Он позволяет на незначительное время прервать вычислительный процесс и выяснить, не произошло ли за его время какого-либо события. Если да, то выполняется процедура обработки этого события (если она написана Вами), а затем происходит возврат для продолжения прерванного вычислительного процесса.

Для иллюстрации приведем 2 примера: задержка вида экрана на заданное время и задержка вида экрана до наступления какого-либо события.

Пример1. Задержка на заданное время. Объявляем переменные:

Dim time!, tz!

и вводим требующееся время задержки:

tz = Val(InputBox(“Введите требующееся время задержки в

секундах”))

В то место кода основного вычсислительного процесса, где требуется прервать его, вставляем следующий код:

time = Timer

Do

DoEvents

Loop Until Timer - time > tz

Пример2. Задержка процесса до, например, щелчка по форме.

В разделе General формы обявляем переменную:

Private a%

Создаем процедуру:

Private Sub Form_Click()

a = 5

End Sub

Там, где требуется прервать процесс, вставляем код:

a = 10

Do

DoEvents

Loop Until a < 10

3.5.7. Объединение кнопок в группы.

Для объединения кнопок в независимые группы можно использовать контейнеры. Контейнерами, кроме формы, могут быть элементы Picturebox и Frame. Каждый из них внутри своих границ может содержать другие объекты, которые при перемещении объекта-контейнера перемещаются вместе с ним. Можно даже поместить один контейнер в другой. Каждая группа кнопок OptionButton может быть помещена в свой контейнер. Если все кнопки OptionButton расположены просто на форме, то только одна из них может быть выбрана. Если же кнопки разбить на группы и каждую из них поместить в отдельный контейнер, то в каждом контейнере можно будет выбрать свою кнопку, Кнопки, находящихся в разных контейнерах, будет уже независимы, хотя в пределах каждого контейнера они зависимы.

3.5.7.1. Элемент Frame.

Основные свойства элемента управления Frame:

Таб. 3.5.7.1

Свойство

Значение свойства

Name

Имя элемента

Caption

Текст подсказки

Font

Шрифт подсказки

BackСolor

Цвет фона элемента

ForeСolor

Цвет символов заголовка

Префиксом имени элемента служит fra. Свойство Caption задаёт заголовок элемента Frame, разрывающий сверху рамку. Если Caption удалено, - заголовка нет и рамка сплошная. Для помещения объекта в контейнер, нужно сначала разместить на форме сам контейнер. Внутри контейнера объекты размещаются так же, как они размещаются на форме. В момент начала вычерчивания объекта внутри элемента Frame, курсор должен быть внутри рамки. Элемент управления, уже размещённый на форме, не будет содержаться в контейнере, если элемент Frame будут нарисован поверх него. Нельзя перемещать элемент управления с формы в контейнер буксировкой, так как, хотя он и будет выглядеть помещённым в контейнер, но фактически в нём не будет содержаться.

Если у любого контейнера, формы, элемента PictureBox или элемента Frame установить значение какого-либо свойства (например, Visible), то данное значение установится для всех объектов, размещенных в контейнере и имеющих это свойство. Так, например, изменение значения свойства Font формы приводит к аналогичному изменению этого свойства у всех помещенных на форму элементов.

Конечно, цель создания контейнера не в том, чтобы иметь возможность таскать по форме группу размещённых в контейнере объектов. Если бы контейнеров не существовало, то решение некоторых практических задач было бы непростым делом. Действительно, предположим, что нам нужно выбрать три изделия, каждое из которых имеет свой набор параметров. Элементы OptionButton, расположенные единой группой на форме, не позволяют сделать выбор, т.к. помеченным может быть только один из них. Если для решения этой задачи вместо OptionButton использовать CheckBox, то можно по ошибке выбрать три экземпляра одного и того же изделия. Единственный выход заключается в том, чтобы предусмотреть для каждого изделия отдельный контейнер и расположить в нем элементы OptionButton по числу параметров изделия.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]