ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования __...
10 downloads
177 Views
1MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования _____________________________________ ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Сивохин А.В., Макурин Ю.Д.
ПРОЕКТИРОВАНИЕ WINDOWS-ПРИЛОЖЕНИЙ В ВИЗУАЛЬНЫХ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СРЕДАХ Описание лабораторных работ
ПЕНЗА 2010
1
УДК 681.3
Сивохин А. В., Макурин Ю.Д. Проектирование Windows-приложений в визуальных объектно-ориентированных средах. Описание лабораторных работ. – Пенза: Частная типография Тугушева, 2010 – 230с. Рассматриваются основные приемы работы и наборы компонент визуальных объектно-ориентированных сред проектирования Delphi, Builder C++ и Visual Studio .NET с использованием языков C# и C++ для быстрого создания надежных Windows-приложений. Методическое пособие подготовлено и апробировано в учебном процессе на кафедре “Математическое обеспечение и применение ЭВМ” Пензенского Государственного университета и предназначено для студентов всех специальностей, где предусмотрено изучение дисциплины «Объектноориентированное программирование».
©В.П. Сивохина ©Оформление: Т.А. Макурина и Д.В. Макурин 2
Лабораторная работа № 1
Высокоуровневые методы разработки приложений в среде Delphi Цель работы ⎯ ознакомление с основными компонентами и набором инструментов интегрированной среды проектирования Delphi, изучение структуры проектных файлов простейших приложений, создаваемых автоматически на базе библиотеки визуальных компонент VCL, приобретение навыков построения собственных проектов, форм и модулей, а также овладение способами модификации, сохранения и восстановления проектных файлов создаваемого приложения.
1.1 Создание и сохранение проекта Среда Delphi является однодокументной средой и позволяет создавать приложения на базе высокоуровневого языка Object Pascal и собственной библиотеки компонент VCL (Visual Component Library). Главное окно имеет меню, панель инструментов для вызова наиболее часто используемых команд, палитру компонент для визуального проектирования и клиентскую часть, на которой располагаются три рабочих окна: окно инспектора объектов (Object Inspector), окно конструктора формы и окно редактора кода. Эти окна можно перемещать, изменять их размеры и убирать с экрана. На экране, кроме указанных окон, могут присутствовать и другие окна, отображаемые при вызове соответствующих инструментальных средств. Создаваемое в среде Delphi однодокументное приложение состоит из нескольких файлов различных типов, объединенных в проект. Проект имеет имя, совпадающее с именем приложения. Этим именем в дальнейшем называется исполняемый файл приложения *.exe. В общем случае проект может включать файлы следующих типов: *.dpr – файл проекта; *.dof – файл параметров проекта; *.res – файл описания ресурсов проекта; *.pas – файлы программных модулей, связанные с формами проекта; *.dfm – файлы с текстовым описанием форм проекта; *.pas – файлы программных модулей, не связанные с формами проекта; Минимальный состав проекта включает три файла: *.dpr, *.dof и *.res. В этом случае вся программа должна размещаться в файле *.dpr. При запуске Delphi или при исполнении команды File/New/Application к этим файлам добавляется файл формы Unit1.dfm и файл модуля этой формы Unit1.pas. При компиляции проекта каждый файл типа *.pas преобразуется в файл объектного модуля *.dcu, а после редактирования объектных модулей создается исполняемый файл 3
приложения. В процессе проектирования создаются резервные копии файлов с расширениями *.~dp, *.~df, *.~pa и т.п., на которые не стоит обращать внимание. Помимо имени приложения, отображаемого слева вверху на полосе заголовка главного окна Delphi после номера версии среды и совпадающего с именем проекта, используется ещё и название приложения, задаваемое в поле Title окна, открываемого командой Project/Options/Application. Это название будет отображаться на рабочем столе вместе с иконкой, когда окно работающего приложения будет минимизировано. На вкладке Application окна Project Options можно задать полный путь к справочному файлу и иконку приложения. Для приобретения необходимых навыков по созданию, сохранению, резервному копированию и восстановлению проектов Delphi следует выполнить задания 1.1 – 1.4 . 1.2 Открытие, модификация и настройка параметров проекта В процессе разработки приложения состав файлов проекта, содержание его модулей и структура форм постоянно изменяется. Для сохранения этих изменений необходимо как можно чаще выполнять команду File/Save All, с помощью которой в папке обновляются модифицированные файлы проекта. Командами Project/Add To Project и Project/Remove From Project можно либо расширять состав файлов проекта, либо сокращать, например, при функциональном тестировании приложения. Среда Delphi позволяет также открыть любые текстовые файлы из любых папок, редактировать, выделять и копировать в буфер любые их фрагменты, а затем включать эти фрагменты в модули проекта. Команды меню View/Units и View/Forms позволяют открывать одновременно любое количество модулей и форм, при этом переход от модуля к форме и обратно производиться клавишей F12. Клавиша F11 позволяет оперативно открывать окно Object Inspector, которое во время работы часто исчезает с экрана. Закрытие любого активного окна производится командой File/Close. Закрытие проекта и всех его файлов следует производить командой File/Close All, при этом Delphi делает запрос о необходимости сохранения модифицированных файлов. Среда Delphi имеет мощные средства для собственной настройки, её компонент и опций проекта. Доступ к ним обеспечивается командой Project/Options и командами меню Tools. Однако, стандартные параметры, устанавливаемые при инсталляции, вполне пригодны для учебных целей. Для приобретения необходимых навыков по открытию, модификации и настройки параметров проекта Delphi следует выполнить задание 1.5 . 1.3 Создание форм и их модулей Основным интерфейсным элементом приложений Delphi является форма. Она представляет собой объект производного от визуальной компоненты TForm 4
класса и внешне похожа на типичное окно Windows. Начальное имя производного класса формы TForm1 можно заменить с помощью свойства Name в окне Object Inspector. Форма имеет системное управляющее меню в верхнем левом углу, полосу заголовка, занимающую верхнюю часть, кнопки свертывания, развертывания и закрытия окна в верхнем правом углу. Таблица 1.1 – Имена модулей и форм Имя формы Имя модуля OrlovArrayUnit OrlovArrayForm OrlovRecordUnit OrlovRecordForm OrlovClassUnit OrlovClassForm OrlovFileUnit OrlovFileForm OrlovGraphicUnit OrlovGraphicForm OrlovTableUnit OrlovTableForm
Назначение Работа с массивами Работа с записями Работа с классами Работа с файлами Работа с графикой Работа с таблицами
Форма является контейнером для установки необходимых управляющих элементов: панелей, полей редактирования, раскрывающихся списков, переключателей, радиокнопок и т. д. Для удобства размещения этих элементов форма имеет сетку, которая исчезает во время выполнения приложения. Положение, размеры и вид формы можно изменять с помощью соответствующих свойств в окне Object Inspector. Приложение может иметь несколько форм, открываемых в различное время в соответствии с требованиями пользователя (см. табл. 2.1). Первая форма автоматически включается в проект при его создании. Остальные формы добавляются в проект командами File/New Form или File/New/Form. После включения формы необходимо в окне Object Inspector задать имя Name, заголовок Caption и другие свойства, а затем сохранить модуль формы, задав ему подходящее имя, с помощью команды File/Save All. Клавиша F12 обеспечивает переход от формы к модулю и обратно. С помощью команды View/Forms можно сделать активной любую форму проекта. При включении форм в проект система Delphi автоматически добавляет в текст проектного модуля *.dpr операторы для создания этих форм при запуске приложения, что не всегда оправдано из соображений эффективности. Чтобы исключить такой автоматизм необходимо перенести имена форм из окна Auto create form в окно Available forms вкладки Form, которая становится доступной при исполнении команды Project/Options/Form. На этой же вкладке в окне Main Form можно задать имя главной формы, которая будет появляться на экране при запуске приложения. Задание осуществляется путем выбора требуемой формы из выпадающего списка всех форм проекта. Остальные формы будут создаваться и отображаться специальными операторами Create, Show, ShowModal. Для приобретения необходимых навыков по созданию форм и их модулей в среде Delphi следует выполнить задание 1.6 .
5
1.4 Создание программных модулей В проектах Delphi можно использовать программные модули, которые не связаны с какой-либо формой. Они создаются и включаются в проект командой File/New/Unit. Такие модули оформляются по обычным правилам языка Object Pascal и сохраняются в отдельных файлах папки проекта. Для подключения модуля к программе его имя указывается в разделе uses того модуля проекта, который использует объекты этого модуля. В программном модуле целесообразно размещать константы, переменные, функции, процедуры и типы, общие для нескольких модулей проекта. Для приобретения необходимых навыков по созданию программных модулей в среде Delphi следует выполнить задание 1.7. 1.5 Построение интерфейса пользователя Приложения Delphi позволяют человеку работать на компьютере в интерактивном режиме. Это реализуется компонентами графического интерфейса: меню, кнопками, полями ввода, диалоговыми панелями и т. д., которые либо устанавливаются на форме, либо появляются на экране динамически при работе приложения. Такие видимые на экране компоненты называются визуальными, или управляющими. Другие компоненты также используются для организации взаимодействия с пользователем, но являются невидимыми, например, компонента Table, используемая для доступа к наборам данных. При построении интерфейса пользователя для каждой визуальной или невизуальной компоненты необходимо: а) найти компоненту в палитре компонент, состоящей из нескольких страниц вкладок; б) щелкнуть один или два раза левой клавишей мыши по найденной компоненте; в) после одного щелчка курсор установить в заданное положение на форме и еще раз щелкнуть левой клавишей мыши, в результате чего на форме появится изображение компоненты, например, поле ввода или ее пиктограмма, например, пиктограмма меню; г) после двойного щелчка появившееся изображение или пиктограмму в центре формы перенести в заданное положение; д) в окне инспектора объектов Object Inspector на вкладке свойств Properties изменить заданные по умолчанию значения необходимых свойств, например, имени компоненты Name; е) в том же окне на вкладке событий Events выбрать требуемое событие, например, OnClick и щелкнуть два раза левой клавишей мыши для перехода в модуль конструируемой формы, чтобы написать желаемый обработчик для выбранного события, при этом заголовок обработчика и операторы «begin-end» формируются автоматически. 6
Работу по созданию интерфейса пользователя называют визуальным объектно-ориентированным программированием, или конструированием. Таким образом, в среде Delphi приложение находится либо в режиме конструирования, либо в режиме отладки, либо в режиме выполнения. Переход из одного режима в какой-либо другой осуществляются следующим образом: а) режим конструирования устанавливается сразу после открытия проекта, после закрытия окна работающего приложения или по команде Run/ Program Reset, когда оно находится в отладочном режиме; б) режим выполнения устанавливается командой Run/ Run; в) отладочный режим устанавливается либо автоматически при возникновении ошибок во время выполнения приложения, либо командами отладки Run/ Run To Cursor, Run/ Trace Into и Run/ Step Over, при этом выход из режима можно осуществить только командой Run/ Program Reset. При размещении визуальных компонент на форме следует задавать положение и размер с помощью курсора, а также свойство выравнивания Align по сторонам формы. Невизуальные компоненты можно размещать где угодно на форме, так как их пиктограммы исчезают при работе приложения. В таблицах 1.2 ⎯ 1.8 приведены краткие описания визуальных и невизуальных компонент Delphi и Builder C++, которые будут использоваться при выполнении лабораторных работ и курсовом проектировании. Таблица 1.2 – Компоненты страницы Standart Имя Название Описание MainMenu Главное меню Для построения главного меню формы и ее команд Label Метка Для размещения статического текста Edit Однострочный Для ввода, отображения и редактор редактирования строки текста Memo Многострочный Для ввода, отображения и редактиредактор рования нескольких строк текста. Button Кнопка Для выполнения команд Panel Панель Для группирования управляющих элементов Таблица 1.3 – Компоненты страницы Additional Имя Название Описание SpeedButton Инструментальная Для создания инструментальных кнопка панелей StringGrid Таблица строк Для ввода, отображения и редактирования таблицы текстовых строк Image Изображение Для работы с графикой Chart График Для графиков и диаграмм
7
Таблица 1.4 – Компоненты страницы Win32 Имя Название Описание RichEdit Многострочный Для ввода, отображения и редакRTF-редактор тирования нескольких строк текста в формате RTF с изменением шрифта, цвета и т. п. Таблица 1.5 – Компоненты страницы Dialogs Имя Название Описание OpenDialog Диалог для открытия Для создания окна диалога открытия файла SaveDialog Диалог для сохранения Для создания окна диалога SaveFileAs FontDialog Диалог для шрифта Для создания окна установки шрифтов Таблица 1.6 – Компоненты страницы Data Access Имя Название Описание DataSourse Источник данных Для соединения компонент Table и Query с компонентами отображения и управления данными DBGrid, DBNavigator и т. п. Table Таблица данных Для связи приложения с таблицей базы данных Query SQL-запросы Для построения и выполнения SQL-запросов к удаленным SQLсерверам или локальным базам данных Таблица 1.7 – Компоненты страницы Data Controls Имя Название Описание DBGrid Таблица экрана Для ввода, отображения и редактирования записей таблицы базы данных DBNavigator Навигатор Для управления просмотром и редактированием таблицы базы данных Таблица 1.8 – Компоненты страницы ActiveX Имя Название Описание VtChart Диаграмма Для построения диаграмм Graph График с диаграммой Для построения графиков и диаграмм
8
Таблица 1.9 – Элементы главного меню Название Работа с массивами Работа с записями Работа с классами Работа с файлами Работа с графикой Работа с таблицами Справка
Имя miOrlovArrayForm miOrlovRecordForm miOrlovClassForm miOrlovFileForm miOrlovGraphicForm miOrlovTableForm miOrlovHelp
Таблица 1.10 – Команды элемента меню «Работа с массивами» Название Имя Создать miCreateArrayForm Открыть miShowArrayForm Скрыть miHideArrayForm Закрыть miCloseArrayForm Удалить miDestroyArrayForm Выход miExitArrayForm Для приобретения необходимых навыков по созданию программных модулей в среде Delphi следует выполнить задания 1.8 – 1.12 . 1.6 Задания для самостоятельной работы в среде Delphi Задание 1.1. Создать и сохранить проект для приложения OrlovApplication, выполнив следующие действия: 1. С помощью Total Commander создать две папки с одним и тем же именем Kurs04c1Orlov соответственно на локальном и сетевом дисках в групповых папках 04с1, а затем Total Commander свернуть. 2. Запустить Delphi одним из следующих способов: с помощью иконки на рабочем столе, с помощью команды главного меню ПУСК или с помощью двойного щелчка левой клавиши мыши по имени delphi32.exe, которое следует найти в папке Borland. 3. В автоматически созданном проекте Project1 изменить с помощью Object Inspector свойства Name и Caption соответственно на OrlovMainForm и «Курсовой проект студента группы 04с1 Орлова К.С.». 4. В поле Title окна Project Options, открываемого командой Project/Options/Application, задать название приложения OrlovApplication. 5. С помощью команды File/ Save Project As переименовать и сохранить в папке Kurs04c1Orlov на локальном диске модуль Unit1 и проектный модуль (файл проекта) Project1, при этом в первом появившемся диалоговом окне имя Unit1 заменить именем OrlovMainUnit, а во втором диалоговом окне имя Project1 на имя OrlovProject. 6. Свернув окно Delphi, в окне Total Commander проверить наличие необходимых файлов проекта OrlovProject в папке Kurs04c1Orlov на локальном 9
диске и познакомиться с содержанием основных и дополнительных файлов проекта. 7. Развернув окно Delphi, установить с помощью команды Tools/Environment/Preferences переключатель Show compiler progress, который позволит отображать на экране в специальном диалоговом окне ход компиляции и редактирования файлов проекта и наличие ошибок Errors и недочетов Warnings в проекте. 8. С помощью команды Project/Options/Directory открыть вкладку и для всех полей этой вкладки, имена которых содержат слово “output” (для вывода), задать путь к папке Kurs04c1Orlov. 9. Выполнить команду Run/Run и проверить начальную функциональность приложения: свертку, развертку и перемещение окна, изменение размеров окна, отображения названия окна и закрытие приложения. 10. С помощью Total Commander проанализировать состав файлов проекта, отметив при этом наличие объектного файла OrlovMainUnit.dcu и исполняемого файла приложения OrlovProject.exe. 11. Дважды щелкнув левой клавишей мыши по имени файла OrlovProject.exe, повторно запустите, а затем закройте приложение OrlovApplication. 12. С помощью Total Commander удалить все файлы из папки Kurs04c1Orlov на локальном диске, кроме основных файлов (OrlovProject.dpr, OrlovProject.res, OrlovMainUnit.pas и OrlovMainUnit.dfm). 13. Выполнив команду Run/Run, убедиться в достаточности оставленных файлов и работоспособности приложения. Задание 1.2. Произвести резервное копирование основных файлов проекта OrlovProject на сетевой диск, выполнив действия: 1. На левой панели Total Commander открыть папку Kurs04c1Orlov локального диска, а на правой панели – папку с тем же именем сетевого диска. 2. На левой панели выделить основные файлы проекта с помощью следующей универсальной процедуры: а) нажать на клавиатуре самую правую клавишу со знаком «+»; б) в открывшемся окне заменить фильтр *.* для выделения всех файлов на фильтр *.dpr для выделения файла проекта; в) нажать клавишу ENTER; г) повторить пункты а), б) и в) для фильтров *.res, *.pas и *.dfm, чтобы выделить все основные файла проекта. 3. Скопировать на сетевой диск выделенные файлы, нажав клавишу F5 Задание 1.3. Произвести восстановление проекта OrlovProject с сетевого диска, выполнив следующие действия:
10
1. На левой панели Total Commander открыть папку Kurs04c1Orlov локального диска и удалить все файлы проекта, включая и файлы резервных копий (с волной «~»), предварительно закрыв окно Delphi. 2. На правой панели выделить все файлы проекта в папке Kurs04c1Orlov с сетевого диска. 3. Скопировать на локальный диск выделенные файлы, нажав клавишу F5. 4. Выполнить в окне Delphi команду Run/Run для контроля восстановления, предварительно открыв проект OrlovObject на локальном диске. Задание 1.4. Создать на флешке с помощью Total Commander твердую копию всех файлов проекта OrlovObject, находящихся в папке Kurs04c1Orlov сетевого диска, и убедиться, что скопированное на флешку приложение успешно компилируется и запускается. Задание 1.5. Выполнить следующие действия по открытию, модификации и настройке параметров проекта OrlovProject: 1. На локальном диске в групповой папке 04с1 создать временную папку Project1. 2. Запустить Delphi и сохранить в этой папке проект Project1 с помощью команды File/Save Project As, не меняя при этом ни имени модуля Unit1, ни имени проекта Project1. 3. С помощью команды File/Close All закрыть все файлы проекта Project1. 4. Открыть и проверить проект OrlovProject, находящийся на локальном диске, выполнив команды File/Open Project и Run/Run. 5. Закрыть проект OrlovProject с помощью команды File/Close All. 6. Открыть и проверить проект OrlovProject, выполнив команды File/Open и Run/Run. 7. Открыть модуль Unit1 из папки Project1 с помощью команды File/Open и убедиться, что этот модуль автоматически не включается в проект OrlovProject, наблюдая за ходом компиляции в диалоговом окне, появившемся после выполнения команды Run/Run. 8. Добавить модуль Unit1 в проект OrlovProject с помощью команды Project/Add To Project и выполнить команду Run/Run, чтобы убедиться в изменении состава файлов проекта OrlovProject. 9. Выполнить команду File/Close All и выяснить место сохранения модуля Unit1, включенного в проект OrlovProject. 10. С помощью команды View/Units открыть окно с модулем OrlovProject.dpr и проанализировать его содержание. 11. Удалить модуль Unit1 из проекта OrlovProject, выполнив команду Project/Remove From Project, а затем закрыть его с помощью команды File/Close. 12. Закрыть модуль OrlovMainUnit командой File/Close и убедиться с помощью команды Run/Run, что состав проекта не изменился.
11
13. Выполнить команду View/Units, в открывшемся окне выделить модуль OrlovMainUnit и нажать клавишу Enter, что приведет к повторному открытию окна этого модуля. 14. Нажать клавишу F12 для перехода на форму и вновь нажать эту клавишу для возврата в окно модуля. 15. Создать проект командой File/New Application, выполнить команду Run/Run для этого проекта и закрыть сначала окно приложения, а затем командой File/Close All закрыть и сам проект. 16. Создать проект командой File/New/Application, убедится, что он идентичен проекту, который создавался командой File/New Application, и закрыть сам проект. 17. Создать исполняемый файл проекта OrlovProject.exe на локальном диске сначала командой Project/Compile Project, которая компилирует только модифицированные модули проекта, а затем командой Project/Build Project, которая всегда компилирует все модули проекта. 18. Проверить работу приложения в пошаговом режиме, используя команды Run/Trace Into и Run/Step Over, а также Run/Run to Cursor. 19. Включить отладочные средства Evaluate/Modify, Add Watch, Add Breakpoint и более тщательно проверить работу приложения. 20. Удалить на локальном диске временную папку Project1. Задание 1.6. Добавить в проект OrlovProject модули и формы, имена которых указаны в таблице 1.1, выполнив действия: 1. Открыть проект OrlovProject. 2. Создать новую форму командой File/New Form. 3. В окне Object Inspector задать следующие свойства этой формы: Name = OrlovArrayForm; Caption = Работа с массивами студента группы 04с1 Орлова К. С. 4. С помощью команды File/Save As сохранить модуль новой формы в папке Kurs04c1Orlov на локальном диске, задав для него имя OrlovArrayUnit. 5. На вкладке Form, открываемой командой Project/Options/Forms, сделать форму OrlovArrayForm главной, выбрав ее в списке MainForm. 6. Выполнить команду Run/Run и проверить работу приложения с главной формой OrlovArrayForm. 7. Сохранить проект OrlovProject, выполнив команду File/Save All. 8. Повторить пункты 2-7 для всех остальных строк в таблице 1.1. 9. Открыть все модули форм с помощью команды View/Units и расположить их на экране в порядке расположения строк в таблице 1.1. 10. Откройте форму OrlovMainForm, а затем форму OrlovTableForm и вновь форму OrlovMainForm. 11. Выполнить п. 10, используя команду View/Windows List. 12. С помощью команды Project/Options/Forms открыть вкладку Forms, сделать форму OrlovMainForm главной и переместить все остальные формы из 12
списка Auto-create forms в список Available forms, т. е. из левого окна в правое окно. 13. Выполнить команду Run/Run. 14. Сохранить все файлы проекта командой File/Save All. 15. Закрыть проект командой File/Close All. 16. Сделать копию основных файлов проекта *.dpr, *.res, *.pas и *.dfm в папке Kurs04c1Orlov_1_02_06, где цифры означают текущую дату. 17. Скопировать папку Kurs04c1Orlov с сетевого диска на флешку, заменив имя папки именем ее версии Kurs04c1Orlov_1_02_06, где цифры означают текущую дату. Задание 1.7. Создать и включить в проект OrlovProject модуль для определения типов и переменных OrlovAllTypeUnit, выполнив следующие действия: 1. Запустить Delphi и открыть проект OrlovProject, находящийся в папке Kurs04c1Orlov локального диска. 2. С помощью команды File/New/Unit создать программный модуль и проанализировать его текст. 3. Сохранить модуль под именем OrlovAllTypeUnit в папке Kurs04c1Orlov локального диска, выполнив команду File/Save As. 4. Проверить работу приложения с помощью команды Run/Run и убедиться, что новый модуль компилируется. 5. Открыть проектный файл OrlovProject и познакомиться с его содержанием, отметив появление модуля OrlovAllTypeUnit в разделе uses и создание только одной главной формы в разделе Implementation. 6. Выполнить команды File/Save All и File/Close All. 7. Скопировать файлы OrlovProject.dpr и OrlovAllTypeUnit на сетевой диск. Задание 1.8. Для главной формы OrlovMainForm приложения OrlovApplication создать меню типа MainMenu с элементами верхнего уровня, заданными в таблице 1.9, и командами, пример которых для элемента «Работа с массивами» задан в таблице 1.10, выполнив следующую последовательность действий: 1. Открыть проект OrlovProject на локальном диске. 2. Открыть форму OrlovMainForm. 3. Разместить в любом месте формы пиктограмму невидимой компоненты MainMenu, найдя ее на странице Standart палитры компонент (вверху окна Delphi), и задать имя OrlovMainMenu. 4. Дважды щелкнуть левой клавишей мыши по пиктограмме для вызова конструктора, или редактора меню. 5. В открывшемся окне редактора меню построить элементы верхнего уровня, задавая в инспекторе объектов Object Inspector названия (Caption) и имена (Name), указанные в таблице 1.9, и перемещаясь по элементам меню с помощью мыши или клавиш со стрелками «вправо» и «влево». 13
6. Закрыть окно редактора меню и выполнить команду Run/ Run для проверки приложения. 7. Закрыть окно приложения OrlovApplication и выполнить команду File/Save All. 8. Дважды щелкнуть левой клавишей мыши по пиктограмме главного меню на форме OrlovMainForm. 9. Выделить элемент «Работа с массивами» и, перемещаясь вниз с помощью мыши или клавиши со стрелкой «вниз», построить команды этого элемента меню, задавая в окне Object Inspector названия (Caption) и имена (Name), указанные в таблице 1.10. 10. Повторить п. 9 для остальных элементов главного меню, кроме элемента «Справка», заменяя в именах команд ArrayForm на RecordForm, ClassForm, FileForm, GraphicForm и TableForm соответственно. 11. Для элемента «Справка» задать две команды: «Об авторе» с именем miAbout и «Пояснительная записка» с именем miOrlovNoteBook. 12. Выполнить команды File/Save All и Run/Run. 13. Скопировать основные файлы *.dpr, *.res, *.pas и *.dfm проекта OrlovProject на сетевой диск. Задание 1.9. Для одной из команд главного меню приложения OrlovApplication написать обработчик события OnClick, который выдавал бы на экран сообщение с помощью оператора ShowMessage, выполнив следующие действия: 1. Дважды щелкнуть левой клавишей мыши по пиктограмме главного меню на форме OrlovMainForm. 2. В окне редактора меню выделить команду, например, Работа с файлами/Открыть. 3. В окне Object Inspector открыть вкладку Events и дважды щелкнуть левой клавишей мыши по событию OnClick. 4. В заготовке обработчика события модуля главной формы написать оператор: ShowMessage(‘Приложение выполнило команду Открыть’); 5. Выполнить команду Run/Run Delphi; 6. Выполнить команду Работа с файлами/Открыть OrlovApplication и закрыть приложение. 7. Удалить обработчик OnClick с помощью последовательности действий:
приложения следующей
а) удалить заголовок и процедуру обработчика в модуле OrlovMainUnit; б) открыть окно редактора меню; в) выделить команду Работа с файлами/Открыть; г) в окне Object Inspector на вкладке Events удалить имя обработчика. 8. Закрыть окно редактора меню. 14
9. Выполнить команду Run/Run. 10. Убедится, что команда Работа с файлами/Открыть не работает. 11. Написать, проверить работу и удалить обработчики для команд Создать, Открыть, Скрыть, Закрыть, Удалить и Выход для элемента меню Работа с массивами. Задание 1.10. Используя компоненты Panel и Label, создать на форме OrlovMainForm модель главного меню со всеми элементами верхнего уровня (см. таблицу 1.9) и со всеми командами этих элементов (см. таблицу 1.10), проверить работу и очистить форму. Задание 1.11. Разместить на форме OrlovMainForm 6 горизонтальных панелей и установить на этих панелях компоненты из таблиц 1.2 ⎯ 1.8, проверить работу приложения и удалить все компоненты, очистив полностью форму. Задание 1.12. Написать обработчики событий для ввода-вывода целых, вещественных и строковых значений, выполнив следующие шаги: 1. На форме OrlovMainForm установить две компоненты Edit с именами InEdit и OutEdit соответственно. 2. Очистить свойства Text и Caption этих компонент. 3. Над окном InEdit поместить метку «Для ввода», а над окном OutEdit – «Для вывода», используя для этих целей компоненту Label. 4. В разделе Var модуля OrlovMainUnit объявить три переменные: VarInt : Integer; VarFloat : Float; VarStr : String; 5. На форме установить три кнопки типа TButton с надписями Integer, Float и String, соответственно, которые задать с помощью свойства Caption. 6. Для кнопки Integer написать обработчик: VarInt := StrToInt(InEdit.Text); OutEdit.Text := IntToStr(VarInt);
{Ввод} {Вывод}
7. Для кнопки Float написать обработчик: VarFloat := StrToFloat(InEdit.Text); {Ввод} OutEdit.Text := FloatToStr(VarFloat); {Вывод} 8. Для кнопки String написать обработчик: VarStr := InEdit.Text; OutEdit.Text := VarStr; 9. Выполнить команду Run/Run. 10. В окне ввода задать число 15, щелкнуть левой клавишей мыши по кнопке Integer и убедиться, что число 15 появилось в окне вывода. 11. Повторить пункт 9 для ввода числа 8.3 и строки «Orlov». 15
Лабораторная работа № 2
Высокоуровневые методы разработки приложений в среде Builder C++ Цель работы ⎯ ознакомление с основными компонентами и набором инструментов интегрированной среды проектирования Builder C++, изучение структуры проектных файлов простейших приложений, создаваемых автоматически на базе библиотеки визуальных компонент VCL, приобретение навыков построения собственных проектов, форм и модулей, а также овладение способами модификации, сохранения и восстановления проектных файлов создаваемого приложения.
2.1 Создание и сохранение проекта Среда Builder C++ является однодокументной средой и позволяет создавать приложения на базе высокоуровневого языка C++ и собственной библиотеки компонент VCL (Visual Component Library). Главное окно имеет меню, панель инструментов для вызова наиболее часто используемых команд, палитру компонент для визуального проектирования и клиентскую часть, на которой располагаются три рабочих окна: окно инспектора объектов (Object Inspector), окно конструктора формы и окно редактора кода. Эти окна можно перемещать, изменять их размеры и убирать с экрана. На экране, кроме указанных окон, могут присутствовать и другие окна, отображаемые при вызове соответствующих инструментальных средств. Создаваемое в среде Builder C++ однодокументное приложение состоит из нескольких файлов различных типов, объединенных в проект. Проект имеет имя, совпадающее с именем приложения. Этим именем в дальнейшем называется исполняемый файл приложения *.exe. В общем случае проект может включать файлы следующих типов: *.bpr – файл проекта; *.res – файл описания ресурсов проекта; *.cpp – файлы реализации программных модулей, связанные с формами проекта; *.h – заголовочные файлы программных модулей, связанные с формами проекта; *.dfm – файлы с текстовым описанием форм проекта; *.cpp – файлы реализации программных модулей, не связанные с формами проекта; *.h – заголовочные файлы программных модулей, не связанные с формами проекта. Минимальный состав проекта включает два файла: *.bpr и *.res. В этом случае вся программа должна размещаться в файле *.bpr. При запуске Builder C++ или при исполнении команды File/New/Application к этим файлам добавляется файл формы Unit1.dfm, файл модуля этой формы Unit1.cpp и заголовочный файл 16
Unit1.h. При компиляции проекта каждый файл типа *.bpr или *.cpp преобразуется в файл объектного модуля *.obj, а после редактирования объектных модулей создается исполняемый файл приложения *.exe. В процессе проектирования создаются резервные копии файлов с расширениями *.~bpr, *.~cpp, *.~h и *.~dfm, на которые не стоит обращать внимание. Помимо имени приложения, отображаемого слева вверху на полосе заголовка главного окна Builder C++ после номера версии среды и совпадающего с именем проекта, используется ещё и название приложения, задаваемое в поле Title окна, открываемого командой Project/Options/Application. Это название будет отображаться на рабочем столе вместе с иконкой, когда окно работающего приложения будет минимизировано. На вкладке Application окна Project Options можно задать полный путь к справочному файлу и иконку приложения. Для приобретения необходимых навыков по созданию, сохранению, резервному копированию и восстановлению проектов Builder C++ следует выполнить задания 2.1 – 2.4 . 2.2 Открытие, модификация и настройка параметров проекта В процессе разработки приложения состав файлов проекта, содержание его модулей и структура форм постоянно изменяется. Для сохранения этих изменений необходимо как можно чаще выполнять команду File/Save All, с помощью которой в папке обновляются модифицированные файлы проекта. Командами Project/Add To Project и Project/Remove From Project можно либо расширять состав файлов проекта, либо сокращать, например, при функциональном тестировании приложения. Среда Builder C++ позволяет также открывать любые текстовые файлы из любых папок, редактировать, выделять и копировать в буфер любые их фрагменты, а затем включать эти фрагменты в модули проекта. Команды меню View/Units и View/Forms позволяют открывать одновременно любое количество модулей и форм, при этом переход от модуля к форме и обратно производиться клавишей F12. Клавиша F11 позволяет оперативно открывать окно Object Inspector, которое во время работы часто исчезает с экрана. Закрытие любого активного окна производится командой File/Close. Закрытие проекта и всех его файлов следует производить командой File/Close All, при этом Builder C++ делает запрос о необходимости сохранения модифицированных файлов. Среда Builder C++ имеет мощные средства для собственной настройки среды, выбора компонент и опций проекта. Доступ к ним обеспечивается командой Project/Options и командами меню Tools. Однако, стандартные параметры, устанавливаемые при инсталляции, вполне пригодны для учебных целей. Для приобретения необходимых навыков по открытию, модификации и настройки параметров проекта Builder C++ следует выполнить задание 2.5 . 2.3 Создание форм и их модулей 17
Основным интерфейсным элементом приложений Builder C++ является форма. Она представляет собой объект производного от визуальной компоненты TForm класса и внешне похожа на типичное окно Windows. Начальное имя производного класса формы TForm1 можно заменить с помощью свойства Name в окне Object Inspector. Форма имеет системное управляющее меню в верхнем левом углу, полосу заголовка, занимающую верхнюю часть, кнопки свертывания, развертывания и закрытия окна в верхнем правом углу. Таблица 2.1 – Имена модулей и форм Имя модуля Имя формы OrlovArrayUnit OrlovArrayForm OrlovRecordUnit OrlovRecordForm OrlovClassUnit OrlovClassForm OrlovFileUnit OrlovFileForm OrlovGraphicUnit OrlovGraphicForm OrlovTableUnit OrlovTableForm
Назначение Работа с массивами Работа с записями Работа с классами Работа с файлами Работа с графикой Работа с таблицами
Форма является контейнером для установки необходимых управляющих элементов: панелей, полей редактирования, раскрывающихся списков, переключателей, радиокнопок и т. д. Для удобства размещения этих элементов форма имеет сетку, которая исчезает во время выполнения приложения. Положение, размеры и вид формы можно изменять с помощью соответствующих свойств в окне Object Inspector. Приложение может иметь несколько форм, открываемых в различное время в соответствии с требованиями пользователя (см. табл. 2.1). Первая форма автоматически включается в проект при его создании. Остальные формы добавляются в проект командами File/New Form или File/New/Form. После включения формы необходимо в окне Object Inspector задать имя Name, заголовок Caption и другие свойства, а затем сохранить модуль формы, задав ему подходящее имя, с помощью команды File/Save As. Клавиша F12 обеспечивает переход от формы к модулю и обратно. С помощью команды View/Forms можно сделать активной любую форму проекта. При включении форм в проект система Builder C++ автоматически добавляет в текст проектного модуля *.bpr операторы для создания этих форм при запуске приложения, что не всегда оправдано из соображений эффективности. Чтобы исключить такой автоматизм необходимо перенести имена форм из окна Auto create form в окно Available forms вкладки Form, которая становится доступной при исполнении команды Project/Options/Form. На этой же вкладке в окне Main Form задать имя главной формы, которая будет появляться на экране при запуске приложения. Задание осуществляется путем выбора требуемой формы из выпадающего списка всех форм проекта. Остальные формы будут создаваться и отображаться специальными операторами Create, Show, ShowModal. Для приобретения необходимых навыков по созданию форм и их модулей в среде Builder C++ следует выполнить задание 2.6 . 18
2.4 Создание программных модулей В проектах Builder C++ можно использовать программные модули, которые не связаны с какой-либо формой. Они создаются и включаются в проект командой File/New/Unit. Такие модули оформляются по обычным правилам языка C++ и сохраняются в отдельных файлах папки проекта. Для подключения модуля к программе его необходимо включить директивой #include в том модуле проекта, который использует объекты этого модуля. В программном модуле целесообразно размещать константы, переменные, функции, процедуры и типы, общие для нескольких модулей проекта. Для приобретения необходимых навыков по созданию программных модулей в среде Builder C++ следует выполнить задание 2.7 . 2.5 Построение интерфейса пользователя Приложения Builder C++ позволяют человеку работать на компьютере в интерактивном режиме. Это реализуется компонентами графического интерфейса: меню, кнопками, полями ввода, диалоговыми панелями и т. д., которые либо устанавливаются на форме, либо появляются на экране динамически при работе приложения. Такие видимые на экране компоненты называются визуальными, или управляющими. Другие компоненты также используются для организации взаимодействия с пользователем, но являются невидимыми, например, компонента Table, используемая для доступа к наборам данных. При построении интерфейса пользователя для каждой визуальной или невизуальной компоненты необходимо: а) найти компоненту в палитре компонент, состоящей из нескольких страниц вкладок; б) щелкнуть один или два раза левой клавишей мыши по найденной компоненте; в) после одного щелчка курсор установить в заданное положение на форме и еще раз щелкнуть левой клавишей мыши, в результате чего на форме появится изображение компоненты, например, поле ввода или ее пиктограмма, например, пиктограмма меню; г) после двойного щелчка появившееся изображение или пиктограмму в центре формы перенести в заданное положение; д) в окне инспектора объектов Object Inspector на вкладке свойств Properties изменить заданные по умолчанию значения необходимых свойств, например, имени компоненты Name; е) в том же окне на вкладке событий Events выбрать требуемое событие, например, OnClick и щелкнуть два раза левой клавишей мыши для перехода в модуль конструируемой формы, чтобы написать желаемый обработчик для выбранного события, при этом заголовок обработчика и фигурные скобки «{}» формируются автоматически. 19
Работу по созданию интерфейса пользователя называют визуальным объектно-ориентированным программированием, или конструированием. Таким образом, в среде Builder C++ приложение находится либо в режиме конструирования, либо в режиме отладки, либо в режиме выполнения. Переход из режима в какой-либо другой режим осуществляются следующим образом: а) режим конструирования устанавливается сразу после открытия проекта, после закрытия окна работающего приложения или по команде Run/ Program Reset, когда оно находится в отладочном режиме; б) режим выполнения устанавливается командой Run/ Run; в) отладочный режим устанавливается либо автоматически при возникновении ошибок во время выполнения приложения, либо командами отладки Run/ Run To Cursor, Run/ Trace Into и Run/ Step Over, при этом выход из режима можно осуществить только командой Run/ Program Reset. При размещении визуальных компонент на форме следует задавать положение и размер с помощью курсора, а также свойство выравнивания Align по сторонам формы. Невизуальные компоненты можно размещать где угодно на форме, так как их пиктограммы исчезают при работе приложения. В таблицах 2.2 ⎯ 2.8 приведены краткие описания визуальных и невизуальных компонент Builder C++, которые будут использоваться при выполнении лабораторных работ и курсовом проектировании. Таблица 2.2 – Компоненты страницы Standart Имя Название Описание MainMenu Главное меню Для построения главного меню формы и ее команд Label Метка Для размещения статического текста Edit Однострочный Для ввода, отображения и редактор редактирования строки текста Memo Многострочный Для ввода, отображения и редактиредактор рования нескольких строк текста. Button Кнопка Для выполнения команд Panel Панель Для группирования управляющих элементов Таблица 2.3 – Компоненты страницы Additional Имя Название Описание SpeedButton Инструментальная Для создания инструментальных кнопка панелей StringGrid Таблица строк Для ввода, отображения и редактирования таблицы текстовых строк Image Изображение Для работы с графикой Chart График Для графиков и диаграмм
20
Таблица 2.4 – Компоненты страницы Win32 Имя Название Описание RichEdit Многострочный Для ввода, отображения и редакRTF-редактор тирования нескольких строк текста в формате RTF с изменением шрифта, цвета и т. п. Таблица 2.5 – Компоненты страницы Dialogs Имя Название Описание OpenDialog Диалог для открытия Для создания окна диалога открытия файла SaveDialog Диалог для сохранения Для создания окна диалога SaveFileAs FontDialog Диалог для шрифта Для создания окна установки шрифтов Таблица 2.6 – Компоненты страницы Data Access Имя Название Описание DataSourse Источник данных Для соединения компонент Table и Query с компонентами отображения и управления данными DBGrid, DBNavigator и т. п. Table Таблица данных Для связи приложения с таблицей базы данных Query SQL-запросы Для построения и выполнения SQL-запросов к удаленным SQLсерверам или локальным базам данных Таблица 2.7 – Компоненты страницы Data Controls Имя Название Описание DBGrid Таблица экрана Для ввода, отображения и редактирования записей таблицы базы данных DBNavigator Навигатор Для управления просмотром и редактированием таблицы базы данных Таблица 2.8 – Компоненты страницы ActiveX Имя Название Описание VtChart Диаграмма Для построения диаграмм Graph График с диаграммой Для построения графиков и диаграмм
21
Таблица 2.9 – Элементы главного меню Название Работа с массивами Работа с записями Работа с классами Работа с файлами Работа с графикой Работа с таблицами Справка
Имя miOrlovArrayForm miOrlovRecordForm miOrlovClassForm miOrlovFileForm miOrlovGraphicForm miOrlovTableForm miOrlovHelp
Таблица 2.10 – Команды элемента меню «Работа с массивами» Название Имя Создать miCreateArrayForm Открыть miShowArrayForm Скрыть miHideArrayForm Закрыть miCloseArrayForm Удалить miDestroyArrayForm Выход miExitArrayForm Для приобретения необходимых навыков по созданию программных модулей в среде Builder C++ следует выполнить задания 2.8 – 2.12 . 2.6 Задания для самостоятельной работы в среде Builder C++ Задание 2.1. Создать и сохранить проект для приложения OrlovApplication, выполнив следующие действия: 1. С помощью Total Commander создать две папки с одним и тем же именем Kurs04c1Orlov соответственно на локальном и сетевом дисках в групповых папках 04с1, а затем Total Commander свернуть. 2. Запустить Builder C++ одним из следующих способов: с помощью иконки на рабочем столе, с помощью команды главного меню ПУСК или с помощью двойного щелчка левой клавиши мыши по имени исполняемого файла *.exe для Builder C++, которое следует найти в папке Borland. 3. В автоматически созданном проекте Project1 изменить с помощью Object Inspector свойства Name и Caption соответственно на OrlovMainForm и «Курсовой проект студента группы 04с1 Орлова К.С.». 4. В поле Title окна Project Options, открываемого командой Project/Options/Application, задать название приложения OrlovApplication. 5. С помощью команды File/ Save Project As переименовать и сохранить в папке Kurs04c1Orlov на локальном диске модуль Unit1 и проектный модуль (файл проекта) Project1, при этом в первом появившемся диалоговом окне имя Unit1 заменить именем OrlovMainUnit, а во втором диалоговом окне имя Project1 на имя OrlovProject. 6. Свернув окно Builder C++, в окне Total Commander проверить наличие необходимых файлов проекта OrlovProject в папке Kurs04c1Orlov на локальном 22
диске и познакомиться с содержанием основных и дополнительных файлов проекта. 7. Развернув окно Builder C++, установить с помощью команды Tools/Environment/Preferences переключатель Show compiler progress, который позволит отображать на экране в специальном диалоговом окне ход компиляции и редактирования файлов проекта и наличие ошибок Errors и недочетов Warnings в проекте. 8. С помощью команды Project/Options/Directory открыть вкладку и для всех полей этой вкладки, имена которых содержат слово “output” (для вывода), задать путь к папке Kurs04c1Orlov. 9. Выполнить команду Run/Run и проверить начальную функциональность приложения: свертку, развертку и перемещение окна, изменение размеров окна, отображения названия окна и закрытие приложения. 10. С помощью Total Commander проанализировать состав файлов проекта, отметив при этом наличие объектного файла OrlovMainUnit.obj и исполняемого файла приложения OrlovProject.exe. 11. Дважды щелкнув левой клавишей мыши по имени файла OrlovProject.exe, повторно запустите, а затем закройте приложение OrlovApplication. 12. С помощью Total Commander удалить все файлы из папки Kurs04c1Orlov на локальном диске, кроме основных файлов (OrlovProject.bpr, OrlovProject.res, OrlovMainUnit.cpp, OrlovProject..h и OrlovMainUnit.dfm). 13. Выполнив команду Run/Run, убедиться в достаточности оставленных файлов и работоспособности приложения. Задание 2.2. Произвести резервное копирование основных файлов проекта OrlovProject на сетевой диск, выполнив действия: 1. На левой панели Total Commander открыть папку Kurs04c1Orlov локального диска, а на правой панели – папку с тем же именем сетевого диска. 2. На левой панели выделить основные файлы проекта с помощью следующей универсальной процедуры: а) нажать на клавиатуре самую правую клавишу со знаком «+»; б) в открывшемся окне заменить фильтр *.* для выделения всех файлов на фильтр *.bpr для выделения файла проекта; в) нажать клавишу ENTER; г) повторить пункты а), б) и в) для фильтров *.res, *.cpp, *.h и *.dfm, чтобы выделить все основные файла проекта. 3. Скопировать на сетевой диск выделенные файлы, нажав клавишу F5 Задание 2.3. Произвести восстановление проекта OrlovProject с сетевого диска, выполнив следующие действия:
23
1. На левой панели Total Commander открыть папку Kurs04c1Orlov локального диска и удалить все файлы проекта, включая и файлы резервных копий (с волной «~»), предварительно закрыв окно Builder C++. 2. На правой панели выделить все файлы проекта в папке Kurs04c1Orlov с сетевого диска. 3. Скопировать на локальный диск выделенные файлы, нажав клавишу F5. 4. Выполнить в окне Builder C++ команду Run/Run для контроля восстановления, предварительно открыв проект OrlovObject на локальном диске. Задание 2.4. Создать на флешке с помощью Total Commander твердую копию всех файлов проекта OrlovObject, находящихся в папке Kurs04c1Orlov сетевого диска, и убедиться, что скопированное на флешку приложение успешно компилируется и запускается. Задание 2.5. Выполнить следующие действия по открытию, модификации и настройке параметров проекта OrlovProject: 1. На локальном диске в групповой папке 04с1 создать временную папку Project1. 2. Запустить Builder C++ и сохранить в этой папке проект Project1 с помощью команды File/Save Project As, не меняя при этом ни имени модуля Unit1, ни имени проекта Project1. 3. С помощью команды File/Close All закрыть все файлы проекта Project1. 4. Открыть и проверить проект OrlovProject, находящийся на локальном диске, выполнив команды File/Open Project и Run/Run. 5. Закрыть проект OrlovProject с помощью команды File/Close All. 6. Открыть и проверить проект OrlovProject, выполнив команды File/Open и Run/Run. 7. Открыть модуль Unit1 из папки Project1 с помощью команды File/Open и убедиться, что этот модуль автоматически не включается в проект OrlovProject, наблюдая за ходом компиляции в диалоговом окне, появившемся после выполнения команды Run/Run. 8. Добавить модуль Unit1 в проект OrlovProject с помощью команды Project/Add To Project и выполнить команду Run/Run, чтобы убедиться в изменении состава файлов проекта OrlovProject. 9. Выполнить команду File/Close All и выяснить место сохранения модуля Unit1, включенного в проект OrlovProject. 10. С помощью команды View/Units открыть окно с модулем OrlovProject.bpr и проанализировать его содержание. 11. Удалить модуль Unit1 из проекта OrlovProject, выполнив команду Project/Remove From Project, а затем закрыть его с помощью команды File/Close. 12. Закрыть модуль OrlovMainUnit командой File/Close и убедиться с помощью команды Run/Run, что состав проекта не изменился.
24
13. Выполнить команду View/Units, в открывшемся окне выделить модуль OrlovMainUnit и нажать клавишу Enter, что приведет к повторному открытию окна этого модуля. 14. Нажать клавишу F12 для перехода на форму и вновь нажать эту клавишу для возврата в окно модуля. 15. Создать проект командой File/New Application, выполнить команду Run/Run для этого проекта и закрыть сначала окно приложения, а затем командой File/Close All закрыть и сам проект. 16. Создать проект командой File/New/Application, убедится, что он идентичен проекту, который создавался командой File/New Application, и закрыть сам проект. 17. Создать исполняемый файл проекта OrlovProject.exe на локальном диске сначала командой Project/Compile Project, которая компилирует только модифицированные модули проекта, а затем командой Project/Build Project, которая всегда компилирует все модули проекта. 18. Проверить работу приложения в пошаговом режиме, используя команды Run/Trace Into и Run/Step Over, а также Run/Run to Cursor. 19. Включить отладочные средства Evaluate/Modify, Add Watch, Add Breakpoint и более тщательно проверить работу приложения. 20. Удалить на локальном диске временную папку Project1. Задание 2.6. Добавить в проект OrlovProject модули и формы, имена которых указаны в таблице 2.1, выполнив действия: 1. Открыть проект OrlovProject. 2. Создать новую форму командой File/New Form. 3. В окне Object Inspector задать следующие свойства этой формы: Name = OrlovArrayForm; Caption = Работа с массивами студента группы 04с1 Орлова К. С. 4. С помощью команды File/Save As сохранить модуль новой формы в папке Kurs04c1Orlov на локальном диске, задав для него имя OrlovArrayUnit. 5. На вкладке Form, открываемой командой Project/Options/Forms, сделать форму OrlovArrayForm главной, выбрав ее в списке MainForm. 6. Выполнить команду Run/Run и проверить работу приложения с главной формой OrlovArrayForm. 7. Сохранить проект OrlovProject, выполнив команду File/Save All. 8. Повторить пункты 2 ⎯ 7 для всех остальных строк в таблице 2.1. 9. Открыть все модули форм с помощью команды View/Units и расположить их на экране в порядке расположения строк в таблице 2.1. 10. Откройте форму OrlovMainForm, а затем форму OrlovTableForm и вновь форму OrlovMainForm. 11. Выполнить п. 10, используя команду View/Windows List. 12. С помощью команды Project/Options/Forms открыть вкладку Forms, сделать форму OrlovMainForm главной и переместить все остальные формы из 25
списка Auto-create forms в список Available forms, т. е. из левого окна в правое окно. 13. Выполнить команду Run/Run. 14. Сохранить все файлы проекта командой File/Save All. 15. Закрыть проект командой File/Close All. 16. Сделать копию основных файлов проекта *.bpr, *.res, *.cpp, *.h и *.dfm в папке Kurs04c1Orlov_1_02_06, где цифры означают текущую дату. 17. Скопировать папку Kurs04c1Orlov с сетевого диска на флешку, заменив имя папки именем ее версии Kurs04c1Orlov_1_02_06, где цифры означают текущую дату. Задание 2.7. Создать и включить в проект OrlovProject модуль для определения типов и переменных OrlovAllTypeUnit, выполнив следующие действия: 1. Запустить Delphi и открыть проект OrlovProject, находящийся в папке Kurs04c1Orlov локального диска. 2. С помощью команды File/New/Unit создать программный модуль и проанализировать его текст. 3. Сохранить модуль под именем OrlovAllTypeUnit в папке Kurs04c1Orlov локального диска, выполнив команду File/Save As. 4. Проверить работу приложения с помощью команды Run/Run и убедиться, что новый модуль компилируется. 5. Открыть проектный файл OrlovProject и познакомиться с его содержанием, отметив появление в нем ссылки на модуль OrlovAllTypeUnit и создание только одной главной формы в разделе Implementation. 6. Выполнить команды File/Save All и File/Close All. 7. Скопировать файлы OrlovProject.dpr и OrlovAllTypeUnit на сетевой диск. Задание 2.8. Для главной формы OrlovMainForm приложения OrlovApplication создать меню типа MainMenu с элементами верхнего уровня, заданными в таблице 2.9, и командами, пример которых для элемента «Работа с массивами» задан в таблице 2.10, выполнив следующую последовательность действий: 1. Открыть проект OrlovProject на локальном диске. 2. Открыть форму OrlovMainForm. 3. Разместить в любом месте формы пиктограмму невидимой компоненты MainMenu, найдя ее на странице Standart палитры компонент (вверху окна Builder C++), и задать имя OrlovMainMenu. 4. Дважды щелкнуть левой клавишей мыши по пиктограмме для вызова конструктора, или редактора меню. 5. В открывшемся окне редактора меню построить элементы верхнего уровня, задавая в инспекторе объектов Object Inspector названия (Caption) и имена (Name), указанные в таблице 2.9, и перемещаясь по элементам меню с помощью мыши или клавиш со стрелками «вправо» и «влево». 26
6. Закрыть окно редактора меню и выполнить команду Run/ Run для проверки приложения. 7. Закрыть окно приложения OrlovApplication и выполнить команду File/Save All. 8. Дважды щелкнуть левой клавишей мыши по пиктограмме главного меню на форме OrlovMainForm. 9. Выделить элемент «Работа с массивами» и, перемещаясь вниз с помощью мыши или клавиши со стрелкой «вниз», построить команды этого элемента меню, задавая в окне Object Inspector названия (Caption) и имена (Name), указанные в таблице 2.10. 10. Повторить п. 9 для остальных элементов главного меню, кроме элемента «Справка», заменяя в именах команд ArrayForm на RecordForm, ClassForm, FileForm, GraphicForm и TableForm соответственно. 11. Для элемента «Справка» задать две команды: «Об авторе» с именем miAbout и «Пояснительная записка» с именем miOrlovNoteBook. 12. Выполнить команды File/Save All и Run/Run. 13. Скопировать основные файлы *.bpr, *.res, *.cpp, *.h и *.dfm проекта OrlovProject на сетевой диск. Задание 2.9. Для одной из команд главного меню приложения OrlovApplication написать обработчик события OnClick, который выдавал бы на экран сообщение с помощью оператора ShowMessage, выполнив следующие действия: 1. Дважды щелкнуть левой клавишей мыши по пиктограмме главного меню на форме OrlovMainForm. 2. В окне редактора меню выделить команду, например, Работа с файлами/Открыть. 3. В окне Object Inspector открыть вкладку Events и дважды щелкнуть левой клавишей мыши по событию OnClick. 4. В заготовке обработчика события модуля главной формы написать оператор: ShowMessage(‘Приложение выполнило команду Открыть’); 5. Выполнить команду Run/Run Builder C++; 6. Выполнить команду Работа с файлами/Открыть OrlovApplication и закрыть приложение. 7. Удалить обработчик OnClick с помощью последовательности действий:
приложения следующей
а) удалить заголовок и процедуру обработчика в модуле OrlovMainUnit; б) открыть окно редактора меню; в) выделить команду Работа с файлами/Открыть; г) в окне Object Inspector на вкладке Events удалить имя обработчика. 8. Закрыть окно редактора меню. 27
9. Выполнить команду Run/Run. 10. Убедится, что команда Работа с файлами/Открыть не работает. 11. Написать, проверить работу и удалить обработчики для команд Создать, Открыть, Скрыть, Закрыть, Удалить и Выход для элемента меню Работа с массивами. Задание 2.10. Используя компоненты Panel и Label, создать на форме OrlovMainForm модель главного меню со всеми элементами верхнего уровня (см. таблицу 2.9) и со всеми командами этих элементов (см. таблицу 2.10), проверить работу и очистить форму. Задание 2.11. Разместить на форме OrlovMainForm 6 горизонтальных панелей и установить на этих панелях компоненты из таблиц 2.2 ⎯ 2.8, проверить работу приложения и удалить все компоненты, очистив полностью форму. Задание 2.12. Написать обработчики событий для ввода-вывода целых, вещественных и строковых значений, выполнив следующие шаги: 1. На форме OrlovMainForm установить две компоненты Edit с именами InEdit и OutEdit соответственно. 2. Очистить свойства Text и Caption этих компонент. 3. Над окном InEdit поместить метку «Для ввода», а над окном OutEdit – «Для вывода», используя для этих целей компоненту Label. 4. В разделе Var модуля OrlovMainUnit объявить три переменные: int VarInt; float VarFloat; AnsiString VarStr; 5. На форме установить три кнопки типа Button с надписями Integer, Float и String, соответственно, которые задать с помощью свойства Caption. 6. Для кнопки Integer написать обработчик: VarInt = StrToInt(InEdit->Text); OutEdit->Text = IntToStr(VarInt);
//-ввод; //-вывод;
7. Для кнопки Float написать обработчик: VarFloat = StrToFloat(InEdit->Text); //-ввод; OutEdit->Text = FloatToStr(VarFloat); //-вывод; 8. Для кнопки String написать обработчик: VarStr = InEdit->Text.c_str(); OutEdit->Text = VarStr; 9. Выполнить команду Run/Run. 10. В окне ввода задать число 15, щелкнуть левой клавишей мыши по кнопке Integer и убедиться, что число 15 появилось в окне вывода. 11. Повторить пункт 9 для ввода числа 8.3 и строки «Orlov». 28
Лабораторная работа № 3
Высокоуровневые методы разработки приложений на языке C# в среде Visual Studio .NET Цель работы ⎯ ознакомление с основными компонентами и набором инструментов интегрированной среды разработки Visual Studio .NET, изучение структуры проектных файлов простейших приложений, создаваемых автоматически на языке C# с использованием библиотеки базовых классов платформы .NET, приобретение навыков построения собственных проектов, форм и классов, а также овладение способами модификации, сохранения и восстановления проектных файлов создаваемого приложения. 3.1 Среда Visual Studio и платформа .NET Среда Visual Studio ⎯ это полностью интегрированная визуальная студия разработки, которая одинаково хорошо справляется с языками C++, C#, J# и Visual Basic, а также с ASP.NET, позволяя создавать объектно-ориентированные Windows-приложения и Web-службы. Она является основным компонентом многоязыковой технологии .NET (СЕТЬ). Программными инструментами этой технологии являются платформа .NET Framework и набор ориентированных на эту платформу компиляторов для объектно-ориентированных языков программирования, состав которых постоянно расширяется. Платформа .NET Framework, на которой работает студия Visual Studio .NET и создаваемые с ее помощью приложения, является каркасом и виртуальным интерфейсом для доступа к API-функциям операционной системы Windows. Она позволяет максимально упростить процесс написания исходной программы, ее отладки и компиляции в сборку (Assembly) ⎯ управляемый код для поставки потребителям в виде исполняемых приложений, служб, Web-страниц или библиотек. Инструментами платформы являются библиотека базовых классов .NET Framework (FCL) и общеязыковая исполняющая среда (Common Language Runtime CLR). Компиляторы языков программирования производят синтаксическую проверку исходных программ и компонуют сборки управляемых кодов (Assembly). Выбор языка для среды программирования .NET становится практически вопросом личных предпочтений. «Общеязыковая» в словосочетании «общеязыковая исполняющая среда» указывает на то, что язык программирования не влияет на структуру управляемого кода и его работу. Другие среды не предоставляли такие возможности. Так, в программе на Visual Basic сложно запускать новые потоки. Хуже того, современные языки, такие как Visual Basic и Visual C++, используют разные API, и поэтому знания, приобретенные при написании Windows-программ на Visual Basic, будут стоить весьма немного, когда потребуется написать DLL на C++. 29
Платформа .NET Framework все меняет благодаря использованию общей системы предопределенных типов (Common Type System ⎯ CTS) и общей спецификации языков (Common Language Specification ⎯ CLS). Язык — это просто синтаксическое устройство для генерации кода на промежуточном языке IL, и за немногочисленными исключениями все, что можно сделать на одном языке, возможно и на всех остальных. Более того, независимо от языка, на котором они написаны, все управляемые приложения используют один и тот же интерфейс прикладного программирования ⎯ API библиотеки базовых классов .NET Framework. Перенос приложения Visual Basic на Visual C++ лишь немногим проще написания приложения с нуля. В то же время перенос приложения Visual Basic .NET на языке C# (или наоборот) гораздо проще. В прошлом несовершенство инструментов для преобразования программ из одного языка в другой делало их практически бесполезными. Библиотека базовых классов FCL содержит огромную коллекцию классов управляемого кода (сборок) и предоставляет пользователям объектноориентированный интерфейс API, к которому обращаются управляемые приложения. При написании приложений для .NET Framework нет необходимости использовать библиотеки Windows API, MFC, ATL, COM и другие технологии. Общеязыковая исполняющая среда CLR абстрагирует сервисы операционных систем и служит механизмом для исполнения управляемых приложений (Managed Applications), любое действие которых должно получить одобрение со стороны этой среды. Каждый байт кода, написанный для этой инфраструктуры, либо исполняется CLR, либо получает ее разрешение на исполнение за ее пределами. Ничто не происходит без участия CLR. Программа CLR расположена поверх операционной системы Windows и предоставляет виртуальную среду для управляемых приложений. При запуске управляемой программы исполняющая среда CLR загружает содержащий ее модуль и исполняет его код. Код, предназначенный для CLR, называется управляемым кодом и состоит из команд псевдомашинного языка — общего промежуточного языка (Common Intermediate Language CIL, или просто IL). Команды CIL компилируются в машинный код (обычно код процессора x86) по запросу (Just-In-Time) в период выполнения. Обычно JIT-компиляция любого метода происходит лишь раз — при первом его вызове, и затем результат компиляции кэшируется в памяти, чтобы при повторном вызове он мог быть исполнен без задержки. Код, который никогда не вызывается, никогда и не компилируется. Хотя компиляция по запросу, несомненно, снижает производительность, эти накладные расходы компенсируются тем, что на протяжении исполнения приложения каждый метод компилируется не более раза, а также быстротой и эффективностью JIT-компилятора.
30
Рисунок 3.1 ⎯ Средства платформы .NET во время компиляции и выполнения
31
3.2 Проекты и решения Визуальная объектно-ориентированная среда разработки Visual Studio .NET и язык C# предоставляют широкий спектр возможностей и позволяют быстро, эффективно и надежно реализовать все требования и атрибуты разрабатываемого приложения. Она текстовый редактор с развитыми средствами подсказки (IntelliSense) и синтаксического контроля вводимого текста программ (Design-Time Debugging), визуальный редактор конструктора форм обеспечивающий одновременно с визуальным построением графического объекта его текстовое представление в виде операторов языка, специальные рабочие окна, а также управляющие элементы для автоматического вызова компиляторов, отладчиков и справочной системы. При первом запуске Visual Studio .NET отображается стартовая страница (Start Page), которая представляет собой HTML-страницу (см. рисунок 3.2), содержащую всевозможные ссылки на полезные Web–сайты, и дает возможность открыть существующий проект (Recent Project), произведя на нем щелчок левой клавишей мыши.
Рисунок 3.2 ⎯ Стартовая страница Visual Studio .NET Для разработки нового приложения надо создать решение и построить один или несколько проектов требуемого типа с помощью команды File/New Project. Проект (Project) ⎯ это вся совокупность файлов с исходными программными кодами и ресурсами, в результате компиляции которых создается 32
единая сборка (Assembly) или, в некоторых случаях, единый модуль (Module) для приложения или библиотеки классов.
Рисунок 3.3 ⎯ Выбор типа и задание места расположения проекта приложения Решение (Solution) ⎯ это один или совокупность нескольких взаимосвязанных проектов для определенного пакета целевого программного обеспечения, которые создаются одновременно и с учетом всех существующих между ними взаимосвязей. На рисунке 3.3 выбран тип проекта Windows Application, заданы имена папок для проекта и для решения, а также путь для папки решения, при этом предполагается, что папка проекта автоматически будет включена в папку решения. Проекты и решения редактируются как единое целое и отображаются в окне Solution Explorer. Структура рассматриваемого решения и проекта приведена на рисунке 3.4. Там же приведена форма главного окна приложения после изменения имени ее файла и заголовка. В начале структуры указаны имена папок решения и проекта, а затем располагаются все автоматически создаваемые вложенные папки и файлы, состав и назначение которых зависит от типа проекта.
33
Рисунок 3.4 ⎯ Отображение структуры решения и проекта Таким образом, для рассматриваемого Windows-приложения с именем решения OrlovWindowsApplicationSolution создаются следующие папки и файлы: а) папка OrlovWindowsApplicationSolution ⎯ для решения проекта приложения; б) XML-файл OrlovWindowsApplicationSolution.sln ⎯ для описания параметров решения; в) папка OrlovWindowsApplicationProject ⎯ для проекта приложения; в) XML-файл MakurinClientApplication.csproj ⎯ для описания параметров проекта; г) папка Properties ⎯ для хранения свойств проекта; д) папка References ⎯ для ссылок на системные библиотеки; е) папка OrlovMainForm ⎯ для автоматически генерируемых модулей главной формы приложения; ж) файл Program.cs ⎯ корневой модуль приложения; з) файл OrlovMainForm.cs ⎯ для исходного кода главной формы; и) файл OrlovMainForm.cs ⎯ для создания главной формы; к) файл OrlovMainForm.resx ⎯ для описания ресурсов главной формы. Во время отладки проекта среда Visual Studio .NET создает дополнительные папки и файлы, в которых хранятся тексты на промежуточном языке IL и другая системная информация: папки bin, Debug, obj, файл управляемого кода (сборки) MakurinClientApplication.exe и другие. 34
3.3 Задания для самостоятельной работы Visual Studio .NET Задание 3.1. Создать и сохранить простейший проект приложения для Windows в среде Visual Studio .NET, назвав папку для курсового проекта именем OrlovApplication и выполнив действия: 1. Перед началом работы создать на локальном диске папку для курсового проекта. 2. Запустить Visual Studio .NET через меню ПУСК или соответствующий ярлык на рабочем столе. 3. Выбрать в меню File/New/Project. Появится окно New Project. При первом запуске Visual Studio .NET это окно может появиться и без подсказок. 4. В появившемся окне выбрать тип проекта Visual C#/Windows и шаблон Windows Application, а затем указать названия папок решения и проекта – OrlovApplicationSolution и OrlovApplicationProject соответственно. После нажатия на кнопку OK в указанных папках будут созданы все рабочие папки и начальные файлы проекта. 5. В автоматически созданном проекте OrlovApplicationProject изменить с помощью окна Properties свойства Name и Text формы Form1 соответственно на OrlovMainForm и «Курсовой проект студента группы 08ВП3 Орлова К.С.». 6. Заменить имя файла Form1.cs именем OrlovMainForm.cs с помощью проводника Solution Explorer и окна Properties 7. С помощью Total Commander проверить наличие необходимых файлов проекта OrlovApplicationProject в соответствующей папке на локальном диске и познакомиться с содержанием основных и дополнительных файлов и каталогов проекта. 8. Выполнить команду Start Debugging (F5) и проверить начальную функциональность приложения: свертку, развертку и перемещение окна, изменение размеров окна, отображения названия окна и закрытие приложения. Обратите внимание на то, что наличие ошибок автоматически определяется средой и перед компиляцией проекта вам выдается соответствующее сообщение, в котором предлагается запустить последнюю удачную версию программы. Подробное описание ошибки или предупреждения находится в окне Error List. 9. С помощью Total Commander проанализировать состав файлов проекта, отметив при этом наличие исполняемого файла приложения OrlovApplicationProject.exe в папке Bin/Debug. 10. Дважды щелкнув левой клавишей мыши по имени файла OrlovApplicationProject.exe, повторно запустите, а затем закройте приложение OrlovApplicationProject. Задание 3.2. Произвести резервное копирование файлов курсового проекта OrlovApplication на сетевой диск, выполнив действия: 1. На одной из панелей Total Commander выбрать папку курсового проекта, которая находится на локальном диске, а на другой панели – нужную папку на сетевом диске. 35
2. Скопировать на сетевой диск в выбранное место папку курсового проекта. Задание 3.3. Произвести восстановление проекта OrlovApplication с сетевого диска, выполнив следующие действия: 1. С помощью Total Commander удалить все папки и файлы курсового проекта, находящиеся на локальном диске. 2. На одной из панелей Total Commander выделить папку решения OrlovApplicationSolution на сетевом диске. 3. Скопировать на локальный диск папку со всеми вложенными папками и файлами. 4. Запустить Visual Studio .NET, открыть файл решения OrlovApplicationSolution.sln и выполнить команду Start Debugging для контроля правильности восстановления проекта приложения. Задание 3.4. Создать на флешке с помощью Total Commander твердую копию всех папок и файлов проекта приложения, находящихся в папке OrlovApplication сетевого диска, и убедиться, что скопированное на флешку приложение успешно компилируется и запускается. Задание 3.5. Выполнить следующие действия по открытию, модификации и настройке параметров проекта: 1. На локальном диске в своей папке создать временную папку TEMP. 2. Запустить Visual Studio .NET, создать и сохранить в этой папке решение и проект с именами WindowsApplication1, не меняя при этом ни имени модуля Form1.cs, ни имени проекта WindowsApplication1. 3. С помощью команды File/Close Solution закрыть все файлы проекта WindowsApplication1. 4. Открыть и проверить проект OrlovApplicationProject, находящийся на локальном диске, выполнив команды File/Open/Project/Solution и Start Debugging. 5. Открыть модуль Form1.cs из папки WindowsApplication1 с помощью команды File/Open/File и убедиться, что этот модуль автоматически не включается в проект OrlovApplicationProject, наблюдая за ходом компиляции после выполнения команды Start Debugging. 6. Добавить модуль Form1.cs в проект OrlovApplicationProject с помощью команды Project/Add Existing Item и выполнить команду Start Debugging, чтобы убедиться в изменении состава файлов проекта OrlovApplicationProject. 7. Выполнить команду File/Close Solution и выяснить место сохранения модуля Form1.cs, включенного в проект OrlovApplicationProject. 8. С помощью команды View/Solution Explorer открыть окно Solution Explorer (если вдруг оно закрыто) и проанализировать содержимое проекта OrlovApplicationProject. 9. Удалить модуль Form1.cs из проекта OrlovApplicationProject, выполнив команду Project/Exclude From Project. 36
10. Закрыть модуль OrlovMainForm.cs командой File/Close и убедиться с помощью команды Start Debugging, что состав проекта не изменился. 11. С помощью окна Solution Explorer выделить модуль OrlovMainForm.cs, далее с помощью команды View/Code или пункта контекстного меню – View Code, просмотреть содержимое данного модуля. 12. Нажать клавиши Shift+F7 для перехода на форму и F7 – для возврата в окно кода. Сделать то же самое с помощью левой клавиши мыши и команд соответственно View Designer и View Code. 13. Создать исполняемый файл проекта (сборку) OrlovApplicationProject.exe на локальном диске сначала командой Debug/Start Debugging (F5), которая компилирует только файлы активного проекта, а затем командой Build/Build Solution (F6), которая всегда компилирует файлы всех проектов решения. 14. Проверить работу приложения в пошаговом режиме, используя команды Debug/Step Into (F11) и Debug/Step Over (F10). 15. Включить отладочные средства View/Output, View/Error List, Debug/New Breakpoint/Break at Function и более тщательно проверить работу приложения. Задание 3.6. Добавить в проект OrlovApplicationProject модули и формы, имена которых указаны в таблице 3.1, выполнив приведенные ниже действия: 1. Открыть проект OrlovApplicationProject. 2. Создать новую форму командой Project/Add Windows Form. Таблица 3.1 – Имена модулей и форм Имя модуля Имя формы OrlovArrayForm.cs OrlovArrayForm OrlovStructForm.cs OrlovStructForm OrlovClassForm.cs OrlovClassForm OrlovFileForm.cs OrlovFileForm OrlovGraphicForm.cs OrlovGraphicForm OrlovTableForm.cs OrlovTableForm
Назначение Работа с массивами Работа со структурами Работа с классами Работа с файлами Работа с графикой Работа с таблицами
3. В окне Solution Explorer задать следующие свойства этой формы: Name = OrlovArrayForm; Text = Работа с массивами студента группы 08ВП3 Орлова К.С.; File Name = OrlovArrayForm.cs. 4. С помощью команды File/Save All сохранить все изменения в проекте на локальном диске. Затем с помощью Total Commander удостовериться в том, что на локальном диске для добавляемой формы были созданы два файла: OrlovArrayForm.cs и OrlovArrayForm.Designer.cs. 5. В окне Solution Explorer открыть файл Program.cs и заменить строчку Application.Run(new OrlovMainForm()); 37
строчкой Application.Run(new OrlovArrayForm()); тем самым, сделав форму OrlovArrayForm главной в проекте. 6. Выполнить команду Debug/Start Debugging (F5) и проверить работу приложения с формой OrlovArrayForm, заданной в качестве главной. 7. Сохранить проект OrlovApplicationProject, выполнив команду File/Save All. 8. Повторить пункты 2–7 для всех остальных строк в таблице 3.1. 9. Открыть все модули форм с помощью Solution Explorer и расположить их на экране в порядке расположения строк в таблице 3.1. 10. Выполнить п. 5, но на этот раз сделать главной форму OrlovMainForm. 11. Сохранить все файлы проекта командой File/Save All. 12. Закрыть проект командой File/Exit. 13. Сделать копию папки решения OrlovApplicationSolution на сетевом диске. 14. Скопировать папку проекта с сетевого диска на флешку, заменив имя папки именем ее версии, например, Kurs04c1Orlov_10_11_06, где цифры означают текущую дату. Задание 3.7. Создать и включить в проект OrlovApplicationProject модуль для определения типов и переменных OrlovAllType.cs, выполнив следующие действия: 1. Запустить Visual Studio .NET и открыть проект OrlovApplicationProject с локального диска. 2. С помощью команды Project/Add New Item добавить в проект пустой модуль, выбрав элемент – Code File и указав имя файла – OrlovAllType.cs. 3. Проверить работу приложения с помощью команды Debug/Start Debugging (F5) и убедиться, что новый модуль компилируется. 4. Выполнить команды File/Save All и File/Exit. 5. Скопировать файлы проекта на сетевой диск. Задание 3.8. Для главной формы OrlovMainForm приложения OrlovApplication добавить объект класса MenuStrip с элементами верхнего уровня, заданными в таблице 3.2, и командами, пример которых для элемента «Работа с массивами» задан в таблице 3.3, выполнив следующую последовательность действий: 1. Открыть проект OrlovApplication на локальном диске. 2. Открыть форму OrlovMainForm. 3. Разместить в любом месте формы пиктограмму невидимой компоненты MenuStrip, найдя ее в разделе Menus&Toolbars окна компонент Toolbox, и задать имя OrlovMainMenu.
38
Таблица 3.2 – Элементы главного меню Название Работа с массивами Работа со структурами Работа с классами Работа с файлами Работа с графикой Работа с таблицами Справка
Имя miOrlovArrayForm miOrlovStructForm miOrlovClassForm miOrlovFileForm miOrlovGraphicForm miOrlovTableForm miOrlovHelp
Таблица 3.3 – Команды элемента меню «Работа с массивами» Название Имя Создать miCreateArrayForm Открыть miShowArrayForm Скрыть miHideArrayForm Закрыть miCloseArrayForm Удалить miDestroyArrayForm Выход miExitArrayForm 4. Щелкнуть левой клавишей мыши по меню на форме для вызова конструктора или редактора меню. 5. Задать элементы верхнего уровня, указывая их названия (Text) и имена (Name) в окне Properties, приведенные в таблице 3.2, перемещаясь по элементам меню с помощью мыши или клавиш со стрелками «вправо» и «влево». 6. Проанализировать в файле OrlovMainForm.Designer.cs автоматически созданный код и выполнить команду Debug/Start Debugging (F5) для проверки приложения. 7. Выполнить команду File/Save All. 8. Щелкнуть левой клавишей мыши по меню на форме OrlovMainForm. 9. Выделить элемент «Работа с массивами» и перемещаясь вниз с помощью мыши или клавиши со стрелкой «вниз», построить команды этого элемента меню, задавая их названия (Text) и имена (Name), указанные в таблице 3.3. 10. Повторить п. 9 для остальных элементов главного меню, кроме элемента «Справка», заменяя в именах команд ArrayForm на StructForm, ClassForm, FileForm, GraphicForm и TableForm соответственно. 11. Для элемента «Справка» задать две команды: «Об авторе» с именем miAbout и «Пояснительная записка» с именем miOrlovNoteBook. 12. Выполнить команды File/Save All и Debug/Start Debugging (F5). 13. Скопировать папку проекта OrlovApplication на сетевой диск. Задание 3.9. Для одной из команд главного меню приложения OrlovApplication написать обработчик события Click, который выдавал бы на экран сообщение с помощью класса MessageBox, выполнив следующие действия: 1. Щелкнуть левой клавишей мыши по меню на форме OrlovMainForm. 39
2. В окне редактора меню выделить команду, например, Работа с файлами/Открыть. 3. В окне Properties открыть вкладку Events и дважды щелкнуть левой клавишей мыши по событию Click. 4. В заготовке обработчика события написать оператор: MessageBox.Show("Выполнена команда Работа с файлами/Открыть "); 5. Выполнить команду Debug/Start Debugging (F5). 6. Выполнить команду Работа с файлами/Открыть приложения OrlovApplicationProject и закрыть приложение. 7. Удалить обработчик Click. Для этого необходимо удалить метод обработчика в модуле OrlovMainForm.cs и его заголовок в модуле OrlovMainForm.Designer.cs. 8. Выполнить команду Debug/Start Debugging (F5). 9. Убедится, что команда Работа с файлами/Открыть не работает. 10. Написать, проверить работу и удалить обработчики для команд Создать, Открыть, Скрыть, Закрыть, Удалить и Выход для элемента меню Работа с массивами. Задание 3.10. Используя компоненты Panel и Label, создать на форме OrlovMainForm модель главного меню со всеми элементами верхнего уровня (см. таблицу 3.2) и со всеми командами этих элементов (см. таблицу 3.3), проверить работу и очистить форму. Задание 3.11. Написать обработчики событий для ввода-вывода целых, вещественных и строковых значений, выполнив следующие действия: 1. На форме OrlovMainForm установить две компоненты TextBox с именами InTextBox и OutTextBox соответственно. 2. Над окном InTextBox поместить метку «Для ввода», а над окном OutTextBox – «Для вывода», используя компоненту Label. 3. В модуле OrlovMainForm.cs класса OrlovMainForm объявить три глобальные переменные: int VarInt; float VarFloat; string VarStr; 4. На форме установить три кнопки типа Button с надписями Int, Float и String, соответственно, которые задать с помощью свойства Text. 5. Для кнопки Int написать обработчик: VarInt = Convert.ToInt32(InTextBox.Text); OutTextBox.Text = VarInt.ToString();
{ввод} {вывод}
6. Для кнопки Float написать обработчик: VarFloat = Convert.ToSingle(InTextBox.Text); {ввод} 40
OutTextBox.Text = VarFloat.ToString();
{вывод}
7. Для кнопки String написать обработчик: VarStr = InTextBox.Text; OutTextBox.Text = VarStr;
{ввод} {вывод}
8. Выполнить команду Run/Run. 9. В окне ввода задать 5, щелкнуть левой клавишей мыши по кнопке int и убедиться, что число 5 появилось в окне вывода. 10. Повторить пункт 9 для ввода числа 8.3 и строки «Orlov». 11. Очистить форму и удалить обработчики. Задание 3.12. Ознакомиться со следующими интерфейсными компонентами Windows-приложения: Button, DataGridView, FontDialog, ColorDialog, Label, MenuStrip, OpenFileDialog, Panel, PictureBox, RichTextBox, TextBox, SaveFileDialog, Timer, выполнив действия: 1. Открыть на экране форму приложения OrlovMainForm.Designer.cs. 2. Просмотреть все разделы окна Toolbox, последовательно щелкая левой клавишей мыши по полоскам с их названиями, и выявить доступные для данного типа приложения компоненты. 3. Найти и перенести на форму указанные выше компоненты. 4. Выяснить, как размещаются видимые и невидимые компоненты. 5. Выполнить команду Debug/Start Debugging (F5). 6. Убедиться, что все видимые компоненты отображаются на форме, кроме Panel и PictureBox. 7. Закрыть приложение и изменить цвет этих элементов с помощью свойства BackColor. 8. Выполнить команду Debug/Start Debugging (F5) и убедиться в наличии всех видимых компонент. Задание 3.13. Изменить имена установленных на форме интерфейсных компонент, выполнив действия: 1. Установить курсор на пиктограмму компоненты. 2. Щелкнуть правой клавишей мыши. 3. Открыть окно Property. 4. Используя свойство Name, заменить первую строчную букву прописной и удалить единицу в конце имени. 5. Нажать клавишу ENTER. 6. Повторить эти действия для всех компонент формы. 7. С помощью свойства Text задать соответственно надписи Кнопка и Метка для компонент Button и Label. 8. Выполнить команду Debug/Start Debugging (F5).
41
Задание 3.14. Написать обработчики для изменения шрифта и цвета текста, выполнив действия: 1. Выбрать на форме кнопку с именем Кнопка. 2. Дважды щелкнуть по этой кнопке левой клавишей мыши. 3. В автоматически созданную заготовку обработчика следующий код:
включить
private void Button_Click(object sender, EventArgs e) { FontDialog.ShowDialog(); RichTextBox.SelectionFont = FontDialog.Font; } 4. Выполнить команду Debug/Start Debugging (F5). 5. В окне многострочного редактора RichTextBox набрать произвольный текст и выделить его какую-либо часть. 6. Дважды щелкнуть по кнопке Button левой клавишей мыши. 7. В открывшемся диалоговом окне установить новые параметры шрифта. 8. Закрыть диалоговое окно и проверить сделанные установки. 9. Закрыть приложение. 10.Для кнопки Button заменить обработчик на следующий код: private void Button_Click(object sender, EventArgs e) { ColorDialog.ShowDialog(); RichTextBox.SelectionColor = ColorDialog.Color; } 11. Запустить приложение и проверить возможность изменения цвета текста в окне RichTextBox. Задание 3.15. Написать обработчик для заполнения таблицы DataGridView числовыми данными, выполнив действия: 1. Открыть окно Property таблицы. 2. Выбрав свойство Columns, добавить в таблицу 10 колонок. 3. Для кнопки включить новый обработчик: private void Button_Click(object sender, EventArgs e) { DataGridView.Rows.Add(10); for (int I = 0; I < 10; I++) { DataGridView.CurrentCell = DataGridView[0, I]; DataGridView.CurrentCell.Value = Convert.ToString(I); for (int J = 0; J < 9; J++) { DataGridView.CurrentCell = DataGridView[J + 1, I]; 42
DataGridView.CurrentCell.Value = Convert.ToString(J); } } } 4. Выполнить команду Debug/Start Debugging (F5), щелкнуть по кнопке и проверить данные в таблице. 5. Заполнить таблицу случайными целыми числами, добавив в обработчик объявление генератора Random random = new Random() и заменив в последней строке J на random.Next(0, 100); 6. Выполнить команду Debug/Start Debugging (F5) , щелкнуть по кнопке и проверить данные в таблице. Задание 3.16. Нарисовать в окне PictureBox прямую линию, выполнив действия: 1. Для кнопки включить новый обработчик: private void Button_Click(object sender, EventArgs e) { Graphics OrlovGraphics = PictureBox.CreateGraphics(); float x0; float y0; float x1; float y1; x0 = 0; y0 = 0; Pen RedPen = new Pen(Color.Red, 3); x1 = 100; y1 = 100; OrlovGraphics.DrawLine(RedPen, x0, y0, x1, y1); } 2. Выполнить команду Debug/Start Debugging (F5) , щелкнуть по кнопке и убедиться, что линия нарисована сверху вниз. 3. Видоизменить обработчик следующим образом: private void Button_Click(object sender, EventArgs e) { Graphics OrlovGraphics = PictureBox.CreateGraphics(); float XBase = 0; float YBase = 100; float x0; float y0; float x1; float y1; 43
OrlovGraphics.Clear(Color.Gold); OrlovGraphics.TranslateTransform(XBase, YBase); x0 = 0; y0 = 0; Pen RedPen = new Pen(Color.Red, 3); x1 = 100; y1 = -100; OrlovGraphics.DrawLine(RedPen, x0, y0, x1, y1); } 4. Выполнить команду Debug/Start Debugging (F5) , щелкнуть по кнопке и убедиться, что теперь линия нарисована снизу вверх. Задание 3.17. Создать и запустить консольное приложение, выполнив действия: 1. Исполнить команду New/Project из меню File. 2. В открывшемся окне выбрать тип проекта Visual C#/Windows и задать шаблон Console Application. 3. Запустить приложение на выполнение командой Debug/Start Debugging (F5) и убедиться, что открывается и тут же исчезает окно MS-DOS. 4. С помощью Total Commander открыть окно сеанса DOS и перенести в него файл *.exe для консольного приложения. 5. Нажать на клавишу ENTER и убедиться, что приложение работает. 6. Закрыть приложение. 7. Вставить в метод Main класса Program оператор Console.ReadLine(); 8. Запустить приложение на выполнение командой Debug/Start Debugging (F5) и убедиться, что открывшееся окно MS-DOS не исчезает (приложение работает). 9. Запустить еще несколько готовых консольных приложений, предварительно ознакомившись с их исходным кодом.
44
СОДЕРЖАНИЕ Лабораторная работа № 1. Высокоуровневые методы разработки
приложений в среде Delphi………………. 3 Лабораторная работа № 2. Высокоуровневые методы разработки приложений в среде Builder C++………… 6 Лабораторная работа № 3. Высокоуровневые методы разработки приложений на языке C# в среде Visual Studio .NET...................................... 29
45
Подписано к печати 04.02.2010г. Бумага ксероксная. Формат 60x84 1/16. Печать RISO. Усл. печ. л. 3,5. Заказ 04/02. Тираж 100 экз. Отпечатано с готового оригинал-макета в частной типографии Тугушева 440400, г. Пенза, ул. Моковская, 74, к. 220, тел.: 56-37-16 46