Разработка программы на языке Visual Basic
Вывод графических файлов на компонент Picture. Действия Visual Basic по умолчанию. Создание графического интерфейса пользователя. Циклический показ фотографий. Формирование списка изображений и их циклический вывод на экран с определенным интервалом.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.01.2013 |
Размер файла | 3,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Содержание
Задание на курсовую работу
Отчет по курсовой работе
Введение
Компоненты, используемые в проекте
Создание графического интерфейса пользователя
Программный код проекта
Выводы по работе
Список литературы
Задание на курсовую работу
Задание № 12
Вывод графических файлов на компонент Picture. Список файлов формируется в диалоге открытия файлов (компонент CommonDialog). Изображение масштабируется по размеру компонента Picture, который занимает всю форму и изменяет размеры при изменении размеров формы. Смена файлов происходит циклически (только вперед) через равные промежутки времени. Начало и конец процесса вывода картинок регулируется кнопками панели инструментов (сначала, продолжить, остановить). Составить в MS Word блок-схему алгоритма выбора файла из списка.
Отчет по курсовой работе
Введение
Visual Basic - один из первых языков, поддерживающих событийно-управляемое программирование (event-driven programming). Основная идея событийно-управляемого программирования заключается в том, что в программе необходимо указать, как реагировать на различные события (действия пользователя): выбор команды меню, щелчок или перемещение мыши, нажатие клавиш и др.
В обычной традиционной процедурной модели программирования приложение управляет определенной последовательностью команд. Именно в четко указанной последовательности выполняются разработанные части программного кода. Выполнение придложения начинается с первой строки программы и обычным путем строго в указанной последовательности вызываются по мере необходимости разработанные части кода или процедуры.
Visual Basic берет свое начало из языка структурного программирования BASIC. В нем реализована событийно-управляемая модель программирования. В событийно-управляемом приложении выполнение программы не следует заранее предопределенным путем. Вместо этого программа обрабатывает различные разделы кода в ответ на на события.
События могут быть вызваны действиями пользователя, сообщениями от системы или другого приложения или самим приложением. Поэтому последовательность выполнения кода программы определяется последовательностью событий. Таким образом, поток выполнения кода программы каждый раз в каждом сеансе будет другим.
Существенная часть событийно-управляемого программирования состоит в написании кода, призванного отвечать на возможные события, которые могут происходить в приложении. Visual Basic предоставляет все необходимые средства для реализвации событийно-управляемой модели. На все действия, генерирующие события, нужно отвечать, написав и связав с ними соответствующий программный код. Эти события могут происходить в любом порядке. Таким образом, событийно-управляемая модель программирования предполагает наличиев компиляторе (или в процессоре системы программирования) некоего блока, реагирующего на события по схеме:
If Событие THEN Действие.
Здесь Действие - это программная процедура, определенная разработчиком, либо действие Visual Basic по умолчанию.
В центре объектно-ориентированного программирования (ООП) находится понятие объекта. Объект -- это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Объект -- это экземпляр класса. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.
Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности -- для этого требуется наличие наследования.
Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм; то есть возможность объектов с одинаковой спецификацией иметь различную реализацию.
Появление в ООП отдельного понятия класса закономерно вытекает из желания иметь множество объектов со сходным поведением. Класс в ООП -- это в чистом виде абстрактный тип данных, создаваемый программистом. С этой точки зрения объекты являются значениями данного абстрактного типа, а определение класса задаёт внутреннюю структуру значений и набор операций, которые над этими значениями могут быть выполнены. Желательность иерархии классов (а значит, наследования) вытекает из требований к повторному использованию кода -- если несколько классов имеют сходное поведение, нет смысла дублировать их описание, лучше выделить общую часть в общий родительский класс, а в описании самих этих классов оставить только различающиеся элементы.
Необходимость совместного использования объектов разных классов, способных обрабатывать однотипные сообщения, требует поддержки полиморфизма -- возможности записывать разные объекты в переменные одного и того же типа. В таких условиях объект, отправляя сообщение, может не знать в точности, к какому классу относится адресат, и одни и те же сообщения, отправленные переменным одного типа, содержащим объекты разных классов, вызовут различную реакцию.
Отдельного пояснения требует понятие обмена сообщениями. Первоначально (например, в том же Smalltalk) взаимодействие объектов представлялось как «настоящий» обмен сообщениями, то есть пересылка от одного объекта другому специального объекта-сообщения. Такая модель является чрезвычайно общей. Она прекрасно подходит, например, для описания параллельных вычислений с помощью активных объектов, каждый из которых имеет собственный поток исполнения и работает одновременно с прочими. Такие объекты могут вести себя как отдельные, абсолютно автономные вычислительные единицы. Посылка сообщений естественным образом решает вопрос обработки сообщений объектами, присвоенными полиморфным переменным -- независимо от того, как объявляется переменная, сообщение обрабатывает код класса, к которому относится присвоенный переменной объект.
Однако общность механизма обмена сообщениями имеет и другую сторону -- «полноценная» передача сообщений требует дополнительных накладных расходов, что не всегда приемлемо. Поэтому в большинстве ныне существующих объектно-ориентированных языков программирования используется концепция «отправка сообщения как вызов метода» -- объекты имеют доступные извне методы, вызовами которых и обеспечивается взаимодействие объектов. Данный подход реализован в огромном количестве языков программирования, в том числе C++, Object Pascal, Java, Oberon-2. В настоящий момент именно он является наиболее распространённым в объектно-ориентированных языках.
Концепция виртуальных методов, поддерживаемая этими и другими современными языками, появилась как средство обеспечить выполнение нужных методов при использовании полиморфных переменных, то есть, по сути, как попытка расширить возможности вызова методов для реализации части функциональности, обеспечиваемой механизмом обработки сообщений.
Компоненты, используемые в проекте
В проекте используются следующие компоненты:
1. Toolbar (Панель инструментов)
2. ImageList (Список изображений)
3. CommonDialog (Общий диалог)
4. Timer (Таймер)
5. PictureBox (Изображение)
Чтобы добавить компонент CommonDialog на панель инструментов General нужно открыть окно Components командой меню Project, Components, вкладку Controls и выбрать компонент Microsoft Common Dialog Control 6.0.
Чтобы добавить компоненты Toolbar и ImageList на панель инструментов General нужно открыть окно Components командой меню Project, Components, вкладку Controls и выбрать компонент Microsoft Windows Common Controls 6.0 (SP6).
Компонент Toolbar используется для размещения на нем кнопок, управляющих процессом вывода картинок (сначала, продолжить, остановить). Мы будем использовать событие ButtonClick, возникающее, когда пользователь щелкает по компоненту.
Компонент ImageList используется для хранения списка изображений, которые будут выводиться на экран. Основное свойство, которое мы будем использоваться - ListImages, непосредственно список, в котором хранятся изображения, а метод - ListImages.Add(), позволяющий добавить новое изображение в список.
Компонент CommonDialog используется для диалога открытия файла (добавления его в ImageList). Основное используемое свойство - CmdFileName, в котором хранится путь к открываемому пользователем файлу.
Компонент Timer используется для отсчета интервалов времени между сменами картинки. Основные используемые свойства - Enabled, определяющее, активен таймер или нет, а так же Interval - время в миллисекундах между срабатываниями таймера. При срабатывании таймера происходит событие Timer.
Компонент Picture используется для отображения изображения. Он позволяет растягивать изображение до своих размеров. Основные используемые свойства - Width и Height, ширина и высота компонента, изменение которых необходимо, чтобы компонент занимал всю форму целиком.
Так же мы будем использовать события Load и Resize класса Form. Событие Load возникает при загрузке формы, а Resize - при изменении ее размеров.
Создание графического интерфейса пользователя
Выполняется команда главного меню Пуск, Программы, Microsoft Visual Basic 6.0, Microsoft Visual Basic 6.0 и открывается пиктограмма Standard EXE для создания стандартного проекта приложения.
В окне конструктора проекта зададим свойство Caption формы на «Просмотр изображений».
Размещаются на форме компоненты, как показано на Рис.1.
Рис1. Размещение компонентов на форме.
Необходимо установить свойства Width и Height компонента PictureBox1 так, чтобы этот компонент занимал форму целиком (не считая Toolbar).
Установим свойство Interval компонента Timer1 равным 2000. Это означает двухсекундную задержку между сменой картинок.
Наполним компонент Toolbar кнопками. Для этого щелкнем правой кнопкой мыши по компоненту и выберем окно Property. Перейдем на вкладку Buttons. Кнопки добавляются нажатием на Insert Button. У добавляемых кнопок надо заполнять поля поля Caption (текст кнопки) и Key (идентификатор кнопки, по которому можно обращаться к ней в программе). Добавим три кнопки для управления показом рисунков, с соответственно, полями Caption «Открыть», «Сначала», «Продолжить», «Остановить» и с полями Key соответственно «Open», «FromStart», «Play», «Stop».
Рис. 4. Задание свойств компонента Toolbar1.
Программный код проекта
Опишем закрытую переменную типа 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 добавляет файлы, которые необходимо показывать. После добавления первого файла, он отображается в программе, и становится активными кнопки «Продолжить» и «Сначала» . При нажатии на кнопку «Продолжить» начинается циклический показ фотографий, который можно остановить кнопкой «Остановить». При нажатии на кнопку «Сначала» фотографии начинают показываться с самой первой.
Блок-схема алгоритма выбора файла из списка
Тестирование программы
При открытии программы, пользователь увидит следующее окно:
При нажатии на кнопку «Открыть», он может добавить изображение, которое отобразится в программе:
При добавлении последующих картинок, они будут отображаться в программе:
При нажатии на кнопку «Сначала» отобразится первая картинка:
При нажатии на кнопку «Продолжить» картинки будут циклически меняться, а так же станет активной кнопка «Остановить» и неактивной «Продолжить»:
При нажатии на «крестик» выводится диалоговое окно с просьбой подтвердить выход из программы:
При изменении размеров окна изображение соответствующим образом масштабируется:
Таким образом, программа полностью удовлетворяет поставленным требованиям.
Выводы по работе
графический изображение интерфейс циклический
Мной была написана программа, удовлетворяющая поставленной задаче. Она позволяет формировать список изображений и циклически их выводить на экран с определенным интервалом, а так же управлять этим процессом с помощью кнопок «Сначала», «Остановить» и «Продолжить».
Для решения поставленной задачи были использованы стандартные компоненты Image, Toolbar, CommonDialog, ImageList, Timer, методы FcmdFileName и LoadGrFile а так же события Form_Load, Form_Unload, Form_Resize, Timer1_Timer, Toolbar1_ButtonClick.
Я получила опыт написания событийно-управляемой программы.
Список литературы
1. М. Хальворсон «MS Visual Basic 6.0. Шаг за шагом»
2. С. Браун «Visual Basic 6. Учебный курс»
3. Интернет-ресурс wikipedia.org.
4. Интернет-ресурс cyberforum.ru
Размещено на Allbest.ru
Подобные документы
Разработка программного продукта с помощью языка программирования Visual Basic. Описание интерфейса пользователя и возможностей программы. Исходный код основных модулей. Программа, демонстрирующая основные возможности диаграмм и среды Visual Basic.
контрольная работа [989,9 K], добавлен 29.03.2011Рабочая среда Visual Basic (VB) и ее основные компоненты. Ввод и вывод данных в VB. Объявление переменных и констант в программе. Создание и работа с процедурами и функциями, их виды. Организация ветвления в VB. Использование циклов в программировании.
практическая работа [502,5 K], добавлен 26.10.2013Сумма двух разреженных полиномов, заданных ненулевыми коэффициентами и их номерами. Разработка программ на языке программирования Visual Basic for Applications. Вывод справочной информации. Операционная система Windows. Хранение двоичных данных.
научная работа [390,2 K], добавлен 09.03.2009Язык программирования Visual Basic: краткая история возникновения, значение и общая характеристика. Изучение основных свойств Visual Basic, синтаксис языка. Обзор ключевых операторов Visual Basic, пользовательские процедуры и функции данного языка.
контрольная работа [36,4 K], добавлен 23.07.2014Многообразие мини-игр и возможности языка Visual basic 6.0 для их реализации. Понятие мини-игр и их классификация. Элементы управления мини-игры "Реверси". Разработка прикладной программы. Создание игрового интерфейса. Написание программного кода.
курсовая работа [1,5 M], добавлен 03.06.2014Принципы визуального программирования. Создание программы, генерирующей звук через определенные промежутки времени. Visual Basic как средство разработки прототипов программы, для разработки приложений баз данных и компонентного способа создания программ.
лабораторная работа [1,1 M], добавлен 10.12.2014Программный проект Баз данных средствами Visual Basic 6.0. Проектирование структуры таблицы базы данных Visual Basic 6.0. Заполнение созданных таблиц БД исходными данными. Создание пользовательского меню. Вид формы и свойства элементов управления.
курсовая работа [3,0 M], добавлен 19.06.2010Рождение и развитие Basic. Краткое описание Visual Basic for Applications. Новые возможности Visual Basic 5.0. Пример взаимодействия Excel и Visual Basic. Программирование табличных функций. Встраивание, применение функций. Формы, средства управления OLE.
реферат [20,7 K], добавлен 11.03.2010Написание тестирующей программы для проверки знаний учащихся с помощью языка программирования Visual Basic for Applications (VBA), встроенного в пакет Microsoft Office. Общие сведения о программе, условия ее выполнения, настройка, проверка, выполнение.
контрольная работа [25,2 K], добавлен 07.06.2010Формирование матрицы и выполнение заданий: вычисление сумы четных элементов; максимума из нечетных элементов в строке; произведение элементов в нечетных столбцах; количество четных элементов выше главной диагонали. Создание программы в Visual Basic.
контрольная работа [12,0 K], добавлен 07.10.2012