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

Изображение

Разберем еще один пример, который будет связан с новым для нас элементом управления “Изображение”, позволяющим отображать содержание графических файлов. Пиктограмму этого элемента легко найти среди других элементов управления. Кроме обычных свойств у элемента управления “Изображение” есть свойство Picture. Когда вы в окне свойств попытаетесь подобрать для него значение, то автоматически на экране открывается диалоговое окно для выбора файла. В этом случае следует указать один из файлов с графическим изображением (например, файл с расширением bmp или jpg). На рис. 1.34 объект подобного типа размещен на рабочем листе, а в качестве значения его свойства Picture указано имя одного из графических файлов.

Рис. 1.34. Размещение изображения на листе

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

Для решения подобной задачи необходимо написать процедуру для обработки перемещения курсора мыши (MouseMove).

Перейдем в редактор программного кода, и в списке объектов выберем Image1 (это имя нашего элемента управления по умолчанию и здесь мы его менять не будем), а в правом списке определим действие, которое нас сейчас интересует — MouseMove (рис. 1.35).

Рис. 1.35. Процедура, выполняемая при перемещении мыши на изображении

Таким образом, в окне редактора программного кода мы выбрали заготовку для процедуры, и нам осталось написать ее содержание. На листинге 1.14 приведена процедура, выполняемая при наведении курсора мыши на область изображения.

Листинг 1.14. Обработка перемещения мыши в области изображения

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,

ByVal X As Single, ByVal Y As Single)

If X < Image1.Width / 2 Then

Image1.Picture = LoadPicture("C:\Рис\1.jpg")

Else

Image1.Picture = LoadPicture("C:\Рис\2.jpg")

End If

End Sub

Здесь появились новые конструкции, которые требуют комментария.

Во–первых, X и Y — это координаты курсора мыши, которые автоматически передаются системой в процедуру Image1_MouseMove. Эти переменные располагаются в списке входных параметров, и в тексте процедуры значение одной этих переменных (X) мы используем.

У элемента управления “Изображение” имеется стандартное свойство Width, которое соответствует его ширине. В тексте на листинге используется условие

If X < Image1.Width / 2 Then ,

в котором проверяется — находится курсор мыши левее середины окна рисунка или нет? Если да, то в элемент Image1 выводится файл 1.jpg, а если нет, то файл 2.jpg.

В процедуре на листинге 1.14 используется функция VBA LoadPicture, входным параметром которой является имя графического файла с указанием полного пути, где он располагается. В нашем случае графические файлы с указанными именами располагаются на диске С (если на вашем компьютере другие имена каталога и файлов, то следует входные параметры при вызовах функции LoadPicture изменить).

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

Рассмотрим теперь другую, более интересную в практическом плане, задачу связанную с элементом управления “Изображение”. А именно на листе создадим некий вариант базы данных фотографий сотрудников. Интерфейс готовой разработки показан на рис. 1.36. С помощью кнопки Заполнить список в поле со списком (расположено ниже только что размещенной кнопки) вносятся фамилии сотрудников. Будем считать, что на диске С в каталоге Рис располагаются графические файлы с фотографиями сотрудников. Названия файлов будут совпадать с фамилиями сотрудников (разумеется, со стандартным расширением, отражающем тип графического файла).

На листинге 1.15 приведена процедура, позволяющая заполнить список фамилиями сотрудников, а на листинге 1.16 процедура, позволяющая после этого с помощью щелчка по списку выбрать фотографию определенного сотрудника. Как видно из текста процедур для свойства Name кнопки использовано CommandButton1, для изображения — Image1, а для поля со списком Sp1.

Рис. 1.36. Создание информационной базы фотографий

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

Private Sub CommandButton1_Click()

Sp1.Clear

Sp1.AddItem "Комарова Ю."

Sp1.AddItem "Логинова Н."

Sp1.AddItem "Хайретдинова Э."

End Sub

Листинг 1.16. Процедура для выбора фотографии

Private Sub Sp1_Click()

Image1.Picture = LoadPicture("C:/Рис/" + Sp1.Text + ".jpg")

End Sub

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

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