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

2.3.Полосы прокрутки (hScrollBar и vScrollBar)

Для определенности поговорим о горизонтальной полосе прокрутки (HScrollBar). Все сказанное будет полностью относиться и к вертикальной полосе (VScrollBar).

Поместите на форму горизонтальную полосу. Запустите проект. Потаскайте мышкой бегунок. Вы, безусловно, знакомы с полосой прокрутки по другим приложениям Windows. Она используется в основном для того, чтобы прокручивать информацию в окне или же просто менять значение какой-нибудь величины.

Задача: Изменять с помощью полосы прокрутки значение переменной величины W в пределах от 20 до 50. При щелчке по стрелкам полосы или клавиатуры значение переменной должно меняться на 2, а при щелчке по полосе слева или справа от бегунка значение переменной должно меняться на 5. При запуске проекта бегунок должен стоять на отметке 27.

Ваши действия: Создайте проект и поместите на форму горизонтальную полосу прокрутки. Ее имя HScroll1. Установите в соответствии с числами из задания следующие свойства полосы:

  • Min - 20

  • Max - 50

  • SmallChange - 2

  • LargeChange - 5

  • Value - 27

Проверьте правильность работы полосы, запустив программу:

Private Sub HScroll1_Change()

W = HScroll1.Value

Debug.Print W

End Sub

Событие HScroll1_Change возникает при любом перемещении бегунка.

Задание 123: Поместите рядом с полосой три метки:

Левая метка должна указывать минимальное значение, правая - максимальное, средняя - текущее. Усложнение: Хорошо бы средняя метка бегала рядом с бегунком.

2.4.Slider, ProgressBar

Slider изображен на картинке внизу. Его действие и свойства (Min, Max, SmallChange, LargeChange, Value) аналогичны действию и свойствам полосы прокрутки HScrollBar.

ProgressBar в двух видах изображена сверху. Вы наверняка видели такую при инсталляции программ. Зачем она нужна? Пусть ваша программа запускает длительный процесс, во время которого на экране ничего не происходит (например, считывает информацию из 400 файлов). У пользователя может возникнуть тревожное ощущение, что программа зависла. Чтобы этого ощущения не было, вы можете выдать на экран текст "Я занята. Подождите минутку.", которое пропадет, когда дело сделано. Но опять же, пока дело делается, этот текст так долго и неподвижно красуется посреди экрана, что в душу опять закрадываются подозрения. Гораздо лучше создать ProgressBar, полоса которой после считывания информации из каждого файла будет продвигаться на 1/400 часть длины ProgressBar. Поскольку компьютер работает быстро, у пользователя создастся впечатление, что полоса плавно ползет направо. А раз движение есть, значит компьютер не завис! К тому же можно в процессе работы примерно представлять, какая часть ее выполнена.

Свойства ProgressBar - Min, Max - аналогичны свойствам полосы прокрутки. Внешний вид определяется свойством Scrolling.

Для иллюстрации сказанного создайте проект. Разместите элементы управления, как на картинке. Установите свойство Max слайдера в 50, у остальных - в 100. Запустите следующие процедуры:

Private Sub Command1_Click()

For a = 0 To 40 Step 0.01

ProgressBar1 = a

Next

End Sub

Private Sub Command2_Click()

For a = 0 To 80 Step 0.1

ProgressBar2 = a

Next

End Sub

Private Sub Command3_Click()

For a = 0 To 30 Step 0.001

Slider1 = a

Next

End Sub

Во время выполнения процедур полосы и бегунок слайдера движутся. Если движение слишком быстрое или слишком медленное, измените шаг цикла. На картинке вы видите состояние элементов управления после того, как процедуры отработали.

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

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