Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
14.12.2015
Размер:
16.53 Кб
Скачать

Visual Basic с нуля. Глава 12. ActiveX: Progress Bar. Slider. Пособие-самоучитель on-line "Visual Basic с нуля" Глава 12. ActiveX: Индикатор хода выполнения Progress Bar. Скользящая шкала Slider. Скачать исходник программы "Generator"

или "SliderPic" Дата создания 21.01.2005 {Автор 4us} Что такое ActiveX?

Мой дорогой друг. Когда ты устанавливал на жесткий диск Visual Basic 6.0, то в твой компьютер скачалось много всякого добра, и в том числе куча файлов средств управления ActiveX. Эти файлы лежат в c:\Windows\System или c:\Windows\System32 и имеют расширение .ocx. Большинство этих файлов представляют собой отдельные средства ActiveX, но например, тот, что мы будем рассматривать сегодня (Microsoft Windows Common Controls 6.0) включает в себя аж девять средств управления ActiveX. Некоторые средства ActiveX перечислены на странице "Элементы ActiveX" на сайте http:/vbzero.narod.ru. Сегодня мы поговорим о некоторых.

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

Элемент ActiveX: ProgressBar.

Чтобы приступить к использованию Progress Bar, его надо сперва добавить в панель инструментов нашего нового exe-проекта (по-скольку это средство управления ActiveX храниться в файле mscomctl.ocx). Сделать это - раз плюнуть. Для этого надо создать exe-проект, затем в меню Проект надо щелкнуть по строке Компонеты (Рис.22)

Рисунок 22.

Затем, в открывшемся окне списка средств управления найди строку Microsoft Windows Common Controls 6.0 , щелкни в этой строке по полю флажка, поставив галочку и нажми кнопку OK на окне (Рис.23).

Рисунок 23.

У тебя в панели инструментов появилось сразу несколько объектов. И в том числе ProgressBar (Рис.24). Аналогично добавляются и другие средства ActiveX из других файлов.

Рисунок 24.

Теперь ты можешь перетащить его на форму и начать с ним работать. Он будет называться ProgressBar1. Основными свойствами, которыми мы будем пользоваться являются:

.Min - минимальное числовое значение, с которого шкала начнет работать

.Max - максимальное числовое значение, на котором шкала дойдет до конца.

.Value - текущее числовое значение шкалы

кроме того можно использовать

.Scrolling - меняет прерывистую шкалу (0-ccScrollingStandard) на непрерывную (1-ccScrillingSmooth)

.Orientation - установка в вертикальное (если приспичило) или горизонтальное положение

Кроме того, понятно, что имеются всякие стандартные свойства (типа высота-длина, видимый-невидимый и т.п), о которых и говорить-то нечего.

Вообще использовать ProgressBar имеет смысл только в циклах (любых). Ты задаешь начальное и конечное значение, а значение ProgressBar.Value меняется именно в цикле. Собственно именно оно и заставляет шкалу изменяться. Использование этого объекта рассмотри на примере программы Generator, которая иммитирует игрушки-гадалки. Знаешь такие китайские игрушки: загадаешь желание, крутанешь шарик, а он потом остановится и лампочка зажжется у слова типа "Никогда" или "Скоро". Так вот, у нас у аналогичных слов (они заданы в окне свойств, а не в коде) будет останавливаться шкала ProgressBar со свойством .Scrolling - 1-ccScrillingSmooth (неперывная).

Объявим две переменные: первая для хранения сгенерированного случайного числа, вторая - просто для цикла.

Dim MyValue As Long

Dim x As Long

Положим на форму командную кнопку Command1 и в ней напишем процедурку

Private Sub Command1_Click()

Здесь мы используем генератор случайных чисел. Мы уже использовали генерирование случайных чисел в Главе 3 при создании программы "Однорукий бандит", хоть и без оператора Randomize. Этот оператор просто генерирует число и передает его в качестве опорного в функцию Rnd, которая в свою очередь на основе этого числа генерирует случайное число от 0 до 1.

Randomize ' Инициализирует генератор случайных чисел.

Поскольку, функция Rnd возвращает число, меньшее единицы, мы умножаем его на 10000, а чтобы избежать нулевого значения, прибавляем единицу. Кроме того, получившийся результат округляем до целого числа с помощью функции Int. Эта функция просто отбрасывает дробную часть (а на самом деле не округляет). Синтаксис ее: Int(число). Аналогична ей функция Fix(число), которая работает так же, как и Int, но при округлении отрицательного числа приближает его к числу большему или равному, в то время как Int - к меньшему или равному.

MyValue = Int((10000 * Rnd) + 1) ' Возвращает случайное число от 1 до 10000.

Далее уже задаем начальное (1) и конечное (10000) значение ProgressBar1.

ProgressBar1.Min = 1

ProgressBar1.Max = 10000

Теперь организуем цикл от единицы до полученного нами случайного числа.

В нем при каждом его выполнении значение ProgressBar1.Value изменяется, что отображается на изменении шкалы.

For x = 1 To MyValue

ProgressBar1.Value = x

Next x

End Sub

Вот и вся программка. Да, еще хочу сказать, что число 10 000 выбрано для того, чтобы ProgressBar работал достаточно медленно. Скачать исходник можно вверху страницы.

При загрузке файла средств управления общего назначения в панели инструментов появились и другие объекты ActiveX. Обратим наши взоры на средство Slider, которое располагается через один и ниже ProgressBar'а, думаю, найдешь.

Элемент ActiveX: Slider.

По сути своей этот элемент очень похож на объект "полоса прокрутки ScrollBar", который мы разбирали в Главе 4. Главными отличиями его являются внешний вид: Slider представляет собой линейку с бегунком и отметками-маркерами (тиками), а также то, что его максимальное значение не ограничено, как у ScrollBar'а значением 32767. Элемент этот простой, я не буду повторять описание его свойств .Min, .Max, .Value и т.п. Если пропустил, посмотри выше на этой странице. Однако у Slider'а есть и другие свойства:

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

.TickFrequency - определяет с какой частотой на слайдере будут располагаться маркеры (тики). Например, если у нас Slider1.Min=0, Slider1.Max=1000, а Slider1.TickFrequency=100, то на всем слайдере будут равномерно располагаться (1000-0)/100+1 = 11 тиков, первый из которых будет обозначать 0, второй - 100 и т.д., до последнего - 1000.

Как работать со слайдером, мы разберем примере программки SliderPic (скачать ее можно вверху страницы). Практического применения ей я не вижу, но она иллюстрирует, как с помощью слайдера можно изменять объекты. В нашем случае мы с помощью двух слайдеров - горизонтального и вертикального будем менять, соответственно, ширину и высоту Picture для того, чтобы в нее влезла картинка. Сразу оговорюсь, что поскольку единица измерения размеров объектов в VB принята почему-то в твипах, я все в твипах и оставлю. Если тебе охота перевести в другие единицы, например, в пиксели,- пожалуйста (в Главе 6 мы использовали методы ScaleX и ScaleY для перевода в из одного измерения в другое).

Итак, создадим exe-проект, положим на него Picture1 любого размера, но желательно позиционировать его ближе к верхнему левому углу формы (а то куда ж мы его расширять будем), и два слайдера -Slider1 (горизонтальный) и Slider2 (вертикальный). Чтобы Slider2 стал горизонтальным, надо его свойство .Orientation в окне свойств установить в 1-ccOrientationVertical.

Теперь пишем код.

Option Explicit

В процедуре загрузки формы привяжем начало каждого слайдера к положению Picture

Private Sub Form_Load()

Устанавливаем левую границу Slider1 вровень с левой границей Picture1

Slider1.Left = Picture1.Left - 150

Также устанавливаем верхнюю границу Slider2 вровень с верхней границей Picture1

Slider2.Top = Picture1.Top - 150

Как видишь, мы здесь используем свойства .Top и .Left, которые есть практически у всех объектов. Они показывают расстояние от края формы до границы объекта сверху (.Top) и снизу (.Left).

Поскольку бегунок слайдера в нулевой позиции отстоит от начала самого слайдера где-то на 150 твипов, я из значения положения картинки вычел это расстояние.

Далее загружаем картинку в Picture1. Прошу прощения, за ее пошлость, просто под руку попалась.

Picture1.Picture = LoadPicture(App.Path & "\Lopes.jpg")

Затем устанавливаем свойства для каждого слайдера. Значения .Max слайдеров я взял от фонаря, исходя из того на сколько можно расширить картинку, чтобы она в экран влезала.

Slider1.Min = 0

Slider1.Max = 10215

Slider1.LargeChange = 500

Slider1.Value = Picture1.Width

Slider1.TickFrequency = 500

Slider2.Min = 0

Slider2.Max = 6975

Slider2.LargeChange = 500

Slider2.Value = Picture1.Height

Slider2.TickFrequency = 500

End Sub

Для каждого слайдера создаем процедурку, где присваиваем значению ширины (или длины) Picture1 значение слайдера.

Private Sub Slider1_Click()

Picture1.Width = Slider1.Value

End Sub

Private Sub Slider2_Click()

Picture1.Height = Slider2.Value

End Sub

Вот, собственно, и все.

Copyright © 2005 4us  

Соседние файлы в папке Самоучитель