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

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

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

Dim k As Integer

Dim j As Integer

Опишем закрытую переменную img типа ListImage модуля формы, которая используется для добавления картинки в компонент ImageList, путь к которой получен с помощью CommonDialog1.

Dim img As ListImage

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

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 j = 1 Then ‘Если файл первый

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

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

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

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

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

Pict.Picture = LoadPicture(CmdFileName)

End If

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

Set img = ImageList1.ListImages.Add(j, "",

LoadPicture(CmdFileName))

‘j – позиция следующей картинки, увеличиваем ее на единицу

j = j + 1 ‘Увеличиваем j

End If

End Sub

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

Private Sub Form_Load()

k = 1

j = 1

Timer1.Enabled = False

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

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

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

End Sub

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

Private Sub Form_Unload(Cancel As Integer)

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

Cancel = True

Exit Sub

End If

End Sub

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

Private Sub Image1_Click()

Call LoadGrFile(Image1, CommonDialog1)

End Sub

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

Private Sub Form_Resize()

Image1.Width = Form1.Width

Image1.Height = Form1.Height - Toolbar1.Height

End Sub

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

Private Sub Timer1_Timer()

If (k < ImageList1.ListImages.Count) Then

k = k + 1

Else

k = 1

End If

Image1.Picture = ImageList1.ListImages(k).Picture

End Sub

Согласно заданию команды меню связываем с кнопками панели инструментов.

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComCtlLib.Button)

Select Case Button.Key

Case "FromStart"

FromStart_Click

Case "Pause"

Pause_Click

Case "Play"

Play_Click

End Select

End Sub

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

Private Sub FromStart_Click()

k = 1

Image1.Picture = ImageList1.ListImages(k).Picture

End Sub

Private Sub Pause_Click()

Timer1.Enabled = False

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

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

End Sub

Private Sub Play_Click()

Timer1.Enabled = True

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

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

End Sub

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

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

Да

Нет

k = k +1

k = 1

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

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