Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx155 / Отчет(13).docx
Скачиваний:
16
Добавлен:
01.08.2013
Размер:
1.52 Mб
Скачать

Программный код проекта

Опишем закрытую переменную типа Integer модуля формы k. Переменная k используется для индексации компонента ImageList при добавлении изображений, и указывает на место в списке, куда будет добавлено новое изображение, а так же для просмотра изображений ImageList в цикле, и указывает место в списке отображаемого в данный момент изображения.

Dim k As Integer

Опишем функцию, возвращающую полное имя файла, указанного в окне открытия файла.

Private Function FCmdFileName(CmD As CommonDialog) As String

‘Устанавливаем директорию по умолчанию

CmD.InitDir="C:\"

‘Делаем, чтобы нажатие не «Отмену» считалось ошибкой

CmD.CancelError = True

‘Если произошла ошибка, переходим на метку MtkEr

On Error GoTo MtkEr

‘Устанавливаем флаг обязательного существования файла

CmD.Flags = cdlOFNFileMustExist

‘Делаем пустым начальный путь к файлу

CmD.FileName = ""

‘Вызываем диаологовое окно

CmD.ShowOpen

‘Запоминаем путь к выбранному файлу

FCmdFileName = CmD.FileName

Exit Function

‘Сюда мы попадаем, если произошла ошибка

MtkEr:

‘Если произошедшая ошибка – не нажатие на «Отмену»

If Err.Number <> cdlCancel Then

‘Делаем пустым путь к файлу

FCmdFileName = ""

‘И выводим сообщение об ошибке

MsgBox "Ошибка: " & Err.Description, vbCritical, _

"CmnDlgError"

End If

End Function

Опишем процедуру, загружающую картинку из файла в объект.

Private Sub LoadGrFile(Pict As Object, CmnDlg As CommonDialog)

‘Объявляем переменную типа строка

Dim CmdFileName As String

‘Указываем, файлы с каким расширением будут видны в диалоговом

‘окне

CmnDlg.Filter = "Графические файлы

(*.bmp;*.jpg;*.gif;*.wmf;*.emf). |

*.bmp;*.jpg;*.gif;*.wmf;*.emf"

‘Запоминаем путь к файлу

CmdFileName = FCmdFileName(CmnDlg)

‘Если путь к файлу не пустой

If CmdFileName <> "" Then

‘Если этот файл был первый

If k = 0 Then

‘Активируем кнопку «Сначала»

Toolbar1.Buttons.Item(2).Enabled = True

‘Активируем кнопку «Продолжить»

Toolbar1.Buttons.Item(3).Enabled = True

End If

‘Увеличиваем k на единицу

k = k + 1

‘Добавляем картинку в ImageList

Call ImageList1.ListImages.Add(k, "",

LoadPicture(CmdFileName))

‘Масштабируем картинку под размер PictureBox

Picture1.PaintPicture ImageList1.ListImages.Item(k).Picture, 0, 0, Picture1.Width, Picture1.Height

End If

End Sub

В событии загрузки формы устанавливаются начальные значения переменных k и j, а так же активность таймера и кнопок «Сначала», «Остановить» и «Продолжить», т.к. еще нет ни одного изображения.

Private Sub Form_Load()

‘Начальное значение переменной k

k = 1

‘Отключаем таймер

Timer1.Enabled = False

‘Отключаем кнопку «Сначала»

Toolbar1.Buttons.Item(2).Enabled = False

‘Отключаем кнопку «Продолжить»

Toolbar1.Buttons.Item(3).Enabled = False

‘Отключаем кнопку «Остановить»

Toolbar1.Buttons.Item(4).Enabled = False

End Sub

В событии выгрузки формы ставим запрос на подтверждение окончания работы.

Private Sub Form_Unload(Cancel As Integer)

‘Если во диалоговом окне пользователь нажмет на «No»

If MsgBox("Закончить ?",vbYesNo Or vbQuestion,App.EXEName)=vbNo Then

‘Тогда отменяем закрытие программы

Cancel = True

Exit Sub

End If

End Sub

В событии Resize изменяем размеры компонента Image1 для соответствия форме.

Private Sub Form_Resize()

‘Устанавливаем ширину PictureBox1 равной ширине формы

PictureBox1.Width = Form1.Width

‘Устанавливаем высоту PictureBo1 равной высоте формы за

‘вычетом высоты Toolbar1

PictureBox1.Height = Form1.Height - Toolbar1.Height

‘Если при этом мы уже загрузили хотя бы один рисунок

If k > 0 Then

‘Масштабируем его согласно изменившемуся размеру

Picture1.PaintPicture ImageList1.ListImages.Item(k).Picture,

0, 0, Picture1.Width, Picture1.Height

End If

End Sub

В событии Timer1_Timer переключаем картинки.

Private Sub Timer1_Timer()

‘Если номер текущей картинки меньше, чем всего картинок в

‘ImageList

If (k < ImageList1.ListImages.Count) Then

‘То переключаемся на следующую

k = k + 1

Else

‘Иначе, переключаемся на первую

k = 1

End If

‘И масштабируем рисунок

Picture1.PaintPicture ImageList1.ListImages.Item(k).Picture, 0, 0, Picture1.Width, Picture1.Height

End Sub

Согласно заданию команды меню связываем с кнопками панели инструментов. Опишем действие при нажатии на каждую из кнопок. При нажатии на кнопку «Открыть» вызывается диаологовое окно открытия файлов. При нажатии на кнопку «Сначала», нужно присвоить переменной k значение 0. При нажатии на кнопку «Пауза» нужно остановить таймер, сделать кнопку «Пауза» неактивной, и сделать активной кнопку «Продолжить». При нажатии на кнопку «Продолжить» нужно все сделать наоборот.

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComCtlLib.Button)

‘В зависимости от того, на какую кнопку щелкнули

Select Case Button.Key

‘Если нажать на кнопку «Открыть»

Case "Open"

‘Открыть диаологовое окно открытия файла

Call LoadGrFile(CommonDialog1)

‘Если нажать на кнопку «Сначала»

Case "FromStart"

‘Зануляем k = 0

k = 0

‘И отображаем рисунок

Picture1.PaintPicture ImageList1.ListImages.Item(k).Picture,

0, 0, Picture1.Width, Picture1.Height

‘Если нажать на кнопку «Остановить»

Case "Pause"

‘Выключить таймер

Timer1.Enabled = False

‘Отключить кнопку «Остановить»

Toolbar1.Buttons.Item(4).Enabled = False

‘Включить кнопку «Продолжить»

Toolbar1.Buttons.Item(3).Enabled = True

‘Если нажать на кнопку «Продолжить»

Case "Play"

‘Включить таймер

Timer1.Enabled = True

‘Включить кнопку «Остановить»

Toolbar1.Buttons.Item(4).Enabled = True

‘Выключить кнопку «Продолжить»

Toolbar1.Buttons.Item(3).Enabled = False

End Select

End Sub

При запуске программы, пользователь щелчком по кнопке PictureBox1 добавляет файлы, которые необходимо показывать. После добавления первого файла, он отображается в программе, и становится активными кнопки «Продолжить» и «Сначала» . При нажатии на кнопку «Продолжить» начинается циклический показ фотографий, который можно остановить кнопкой «Остановить». При нажатии на кнопку «Сначала» фотографии начинают показываться с самой первой.

Блок-схема алгоритма выбора файла из списка

Да

Нет

k = k +1

k = 1

Вывод изобржаения

Соседние файлы в папке docx155