Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ch01.doc
Скачиваний:
16
Добавлен:
03.09.2019
Размер:
350.72 Кб
Скачать

Динамическое изменение цвета кнопки

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

  • при расположении курсора мыши в левой верхней части кнопки ее цвет должен быть красный;

  • при расположении курсора в правой верхней части кнопки цвет кнопки должен быть зеленый;

  • если курсор находится в нижней левой части — кнопка должна быть синей;

  • при расположении курсора в правой нижней части кнопка должна принять серый цвет.

Чтобы реализовать требуемый эффект оформим процедуру реакции на перемещение мыши над кнопкой так, как показано на листинге 1.17. Как видно из текста процедуры для свойства Name кнопки использовано C1.

Листинг 1.17. Процедура, реализующая динамическое изменение цвета кнопки

Private Sub C1_MouseMove(ByVal Button As Integer,

ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < C1.Width / 2 And Y < C1.Height / 2 Then

C1.BackColor = RGB(255, 0, 0)

ElseIf X > C1.Width / 2 And Y < C1.Height / 2 Then

C1.BackColor = RGB(0, 255, 0)

ElseIf X < C1.Width / 2 And Y > C1.Height / 2 Then

C1.BackColor = RGB(0, 0, 255)

Else

C1.BackColor = RGB(190, 190, 190)

End If

End Sub

Прокомментируем моменты, которые появились первый раз по тексту издания. А именно: значение переменной Y, которое передается в программу, представляет собой координату курсора мыши в области кнопки по вертикали. Полный размер кнопки по вертикали отражается в значении ее свойства Height. Координата Y изменяется от верхнего угла кнопки к нижнему, а координата X изменяется от левого угла кнопки к правому. В первом условии процедуры

If X < C1.Width / 2 And Y < C1.Height / 2 Then

проверяется — находится ли курсор в левой верхней части кнопки. Если условие выполняется, то цвет кнопки устанавливается красным. Для установки цвета используется свойство кнопки BackColor и внутренняя функция RGB:

C1.BackColor = RGB(255, 0, 0).

Здесь RGB — это функция Visual Basic, которая позволяет установить цвет объекта в виде сочетания трех основных цветов — красного, зеленого и синего. Интенсивности каждого из этих основных цветов задаются в качестве трех входных параметров. При этом минимальное значение интенсивности цвета равняется 0 (в этом случае в составном цвете данная цветовая компонента просто отсутствует), а максимальное 255. В рассматриваемой строке задается максимальная интенсивность для красного цвета и отсутствие компонент зеленого и синего цветов. При подобном сочетании этих трех базовых цветов кнопка будет красной.

Продолжим рассмотрение текста процедуры, приведенной на листинге. Если первое условие не выполняется, то программа переходит к проверке второго условия:

ElseIf X > C1.Width / 2 And Y < C1.Height / 2 Then,

если оно выполняется, то устанавливается зеленый цвет кнопки:

C1.BackColor = RGB(0, 255, 0).

А если второе условие не выполняется, то проверяется третье условие:

ElseIf X < C1.Width / 2 And Y > C1.Height / 2 Then.

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

Программа, таким образом, готова, теперь следует вернуться в Microsoft Excel, выйти из режима конструктора и при перемещении мыши в пределах кнопки, посмотреть на изменение ее цвета.

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