книги / C++Builder. ╨г╤З╨╡╨▒╨╜╤Л╨╣ ╨║╤Г╤А╤Б
.pdfМинистерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Пермский национальный исследовательский политехнический университет»
В.В. Павлоградский, В.В. Пальчиковский
C++BUILDER. УЧЕБНЫЙ КУРС
Утверждено Редакционно-издательским советом университета в качестве учебного пособия
Издательство Пермского национального исследовательского
политехнического университета
2014
УДК 004.438(75.8) П12
Рецензенты:
д-р техн. наук, профессор Р.В. Булъбович (Пермский национальный исследовательский политехнический университет);
д-р техн. наук С.М. Голдобин (ОАО НПО «Искра», г. Пермь)
Павлоградский, В.В.
П12 C++Builder. Учебный курс: учеб, пособие / В.В. Павлоград ский, В.В. Пальчиковский. - Пермь: Изд-во Перм. нац. исслед. политехи, ун-та, 2014. - 293 с.
ISBN 978-5-398-01215-6
Рассматриваются вопросы разработки приложений для опе рационной системы Windows в среде программирования C++Builder. ^Рассмотрены особенности компонентного подхода к проектированию программ и визуальной технологии программи рования. Большое внимание уделено практическому аспекту разра ботки приложений, дан обзор основных компонентов C++Builder, приведены примеры их использования для разработки приложений с учетом особенностей работы операционной системы Windows!]
Предназначено для студентов по направлениям подготовки 141100 «Энергетическое машиностроение» и 160700 «Двигатели летательных аппаратов». Может быть использовано для самостоя тельной работы.
УДК 004.438(75.8)
ISBN 978-5-398-01215-6 |
© ПНИПУ, 2014 |
ОГЛАВЛЕНИЕ |
|
Введение..................................................................................................... |
8 |
1. Знакомство с C++Builder.................................................................. |
11 |
1.1. Основные элементы интегрированной среды C++Builder........... |
11 |
1.1.1. Главное меню......................................................................... |
14 |
1.1.2. Палитра компонентов............................................................ |
15 |
1.1.3. Окно формы............................................................................ |
18 |
1.1.4. Редактор кода.......................................................................... |
19 |
1.1.5. Инспектор объектов.............................................................. |
21 |
1.1.6. Окно дерева объектов........................................................... |
23 |
1.2. Структура приложения C++Builder.............................................. |
25 |
1.2.1. Файл проекта......................................................................... |
27 |
1.2.2. Файл модуля.......................................................................... |
31 |
1.2.2.1. Заголовочный файл........................................................... |
32 |
1.2.2.2. Файл реализации................................................................. |
35 |
1.3. Управление проектами................................................................... |
37 |
1.3.1. Создание нового проекта....................................................... |
37 |
1.3.2. Открытие существующего проекта...................................... |
38 |
1.3.3. Сохранение проекта.............................................................. |
38 |
1.3.4. Запуск приложения................................................................ |
40 |
1.4. Создание приложений в C++Builder............................................. |
40 |
2. Программирование калькулятора................................................... |
50 |
2.1. Конструирование формы............................................................... |
50 |
2.2. Написание программного кода.................................................... |
52 |
3. Программирование текстового редактора..................................... |
59 |
3.1. Конструирование формы............................................................... |
59 |
3.2. Создание меню приложения......................................................... |
60 |
3.3. Поддержка пунктов меню Файл.................................................... |
64 |
3.3.1. Создание нового файла......................................................... |
64 |
3.3.2. Открытие файла..................................................................... |
65 |
3.3.3. Сохранение файла................................................................. |
67 |
3.3.4. Написание обработчика для пункта меню |
|
Сохранить как.......................................................................... |
68 |
3.4. Поддержка подпунктов меню Правка........................................... |
69 |
|
3.5. Поддержка подпунктов меню Формат.......................................... |
70 |
|
3.6. Поддержка подпунктов меню Вид................................................. |
70 |
|
3.7. Поддержка подпунктов меню Справка.......................................... |
71 |
|
3.8. Доработка текстового редактора..................................................... |
74 |
|
3.8.1. Реализация пункта меню Файл->Выход............................... |
75 |
|
3.8.2. Управление доступом к командам........................................ |
77 |
|
4. Основы работы с компонентами.................................................... |
82 |
|
4.1. Классификация и основные свойства компонентов..................... |
82 |
|
4.1.1. Классификация компонентов................................................. |
82 |
|
4.1.2. Основные свойства компонентов.......................................... |
85 |
|
4.1.3. Типы свойств............................................................................ |
90 |
|
4.2. Компоненты отображения и редактирования |
|
|
текстовой информации.............................................................................. |
95 |
|
4.2.1. Компоненты отображения текстовой информации............. |
95 |
|
4.2.1.1. Компонент TLabel................................................................ |
95 |
|
4.2.1.2. Компонент TStaticText........................................................ |
96 |
|
4.2.2. |
Компоненты редактирования............................................... |
97 |
4.2.2.1. Компонент TEdit.................................................................. |
98 |
|
4.2.2.2. Компонент TMaskEdit......................................................... |
99 |
|
4.2.2.3. Компонент ТМ ето............................................................ |
100 |
|
4.2.3. |
Таблицы............................................................................... |
103 |
4.2.3.1. Компонент TStringGrid....................................................... |
104 |
|
4.2.3.2. Компонент TDrawGrid....................................................... |
107 |
|
4.3. Формы и диалоговые окна............................................................. |
109 |
|
4.3.1. Формы.................................................................................... |
109 |
|
4.3.2. Диалоговые окна................................................................... |
111 |
|
4.4. Основы работы с кнопками........................................................... |
115 |
|
4.4.1. Компонент TButton............................................................... |
116 |
|
4.4.2. Компонент TBitBtn............................................................... |
116 |
|
4.4.3. Компонент TSpeedButton...................................................... |
117 |
|
4.4.4. Свойство Default.................................................................... |
118 |
|
4.4.5. Свойство Cancel..................................................................... |
119 |
|
4.4.6. Свойство ModalResult............................................................ |
121 |
|
4.5. Диалоговые компоненты............................................................... |
123 |
|
4.5.1. |
Компонент TOpenDialog и TSaveDialog.......................... |
124 |
4.5.2. Компоненты TOpenPictureDialog |
|
и TSavePictureDialog............................................................. |
126 |
4.5.3. Компонент TColorDialog................................................... |
127 |
4.5.4. Компонент TFontDialog..................................................... |
127 |
4.6. Меню, индикаторы, радиокнопки, компоненты выбора |
|
из списков, панели....................................................................... |
129 |
4.6.1. Компоненты для создания меню........................................ |
129 |
4.6.1.1. Компонент TMainMenu................................................... |
130 |
4.6.1.2. Компонент TPopupMenu.................................................. |
131 |
4.6.2. Индикаторы....................................................................... |
131 |
4.6.2.1. Компонент TCheckBox.................................................... |
132 |
4.6.2.2. Компонент TCheckListBox............................................... |
134 |
4.6.3. Радиокнопки........................................................................ |
134 |
4.6.3.1. Компонент TRadioButton.................................................. |
135 |
4.6.3.2. Компонент TRadioGroup.................................................. |
137 |
4.6.4. Компоненты выбора из списков......................................... |
141 |
4.6.4.1. Компонент TComboBox................................................... |
141 |
4.6.4.2. Компонент TListBox......................................................... |
145 |
4.6.5. Панели................................................................................... |
145 |
5. Графические средства C++Builder................................................ |
151 |
5.1. Графические компоненты............................................................ |
152 |
5.1.1. Объект Canvas...................................................................... |
152 |
5.2. Примеры рисования графических примитивов.......................... |
155 |
5.2.1. Рисование линий.................................................................. |
156 |
5.2.2. Рисование прямоугольников.............................................. |
158 |
5.2.3. Рисование многоугольника................................................. |
159 |
5.2.4. Рисование полилинии.......................................................... |
159 |
5.2.5. Рисование эллипса............................................................... |
160 |
5.2.6. Рисование дуги..................................................................... |
161 |
5.2.7. Использование метода FloodFill.......................................... |
162 |
5.2.8. Вывод текста......................................................................... |
164 |
6. Построение графиков функций..................................................... |
168 |
6.1. Основные обозначения в программе........................................... |
168 |
6.2. Построение сетки.......................................................................... |
169 |
6.3. Вывод обозначений масштабной сетки........................................ |
171 |
6.4. Построение графика функции....................................................... |
174 |
7. Использование компонента TChart |
|
для построения диаграмм и графиков............................................ |
178 |
7.1. Общие сведения о компоненте TChart......................................... |
178 |
7.2. Построение диаграмм.................................................................... |
180 |
7.3. Построение графиков..................................................................... |
185 |
8. Создание анимации.......................................................................... |
189 |
8.1. Моделирование движения шарика............................................... |
189 |
8.2. Моделирование броуновского движения..................................... |
192 |
8.2.1. Определение класса TBall..................................................... |
193 |
8.2.2. Определение методов класса TBall..................................... |
195 |
8.2.3. Создание анимации............................................................... |
196 |
8.3. Анимация графика.......................................................................... |
199 |
9. Разработка графического редактора.............................................. |
203 |
9.1. Конструирование внешнего вида приложения........................... |
203 |
9.2. Создание обработчиков пунктов меню........................................ |
205 |
9.3. Создание нестандартных курсоров.............................................. |
205 |
9.4. Подключение нестандартных курсоров...................................... |
207 |
9.5. Программирование функций графического редактора............. |
210 |
10. Основы работы с базами данных................................................ |
213 |
10.1. Написание приложения для создания |
|
таблиц базы данных...................................................................... |
214 |
10.2. Создание приложения для работы с базой данных................. |
217 |
10.2.1. Создание обработчиков событий...................................... |
218 |
10.2.2. Настройка параметров столбцов в DBGrid...................... |
219 |
10.2.3. Реализация связи Master-Detail |
|
между наборами данных.................................................... |
220 |
10.2.4. Управление связью Master-Detail между наборами |
|
данных при выполнении приложения.............................. |
221 |
10.2.5. Сортировка записей в таблице базы данных................... |
221 |
10.2.6. Поиск записей в таблице базы данных............................ |
223 |
10.2.7. Фильтрация записей в таблице базы данных.................. |
224 |
11. Основы работы с библиотекой OpenGL.................................... |
227 |
11.1. Подключение OpenGL.............................................................. |
228 |
11.1.1. Вывод с использованием функций GDI........................... |
229 |
11.1.2. Контекст устройства и контекст воспроизведения......... |
231 |
11.1.3. Минимальная программа OpenGL.................................... |
233 |
11.1.4. Типы OpenGL..................................................................... |
238 |
11.1.5. Тип TColor и цвет в OpenGL............................................ |
239 |
11.1.6. Синтаксис команд OpenGL............................................... |
241 |
11.2. Двумерные построения.............................................................. |
242 |
11.2.1. Координаты области вывода........................................... |
242 |
11.2.2. Вывод графических примитивов...................................... |
242 |
11.2.2.1. Рисование точки.............................................................. |
243 |
11.2.2.2. Рисование линий............................................................. |
246 |
11.2.2.3. Рисование треугольников.............................................. |
247 |
11.2.2.4. Рисование прямоугольников.......................................... |
250 |
11.2.2.5. Рисование четырехугольников....................................... |
250 |
11.2.2.6. Рисование многоугольников.......................................... |
250 |
11.3. Преобразования.......................................................................... |
251 |
11.3.1. Масштабирование............................................................. |
251 |
11.3.2. Поворот............................................................................... |
252 |
11.3.3. Перенос............................................................................... |
254 |
11.3.4. Сохранение и восстановление текущего положения..... |
254 |
11.4. Построения в пространстве........................................................ |
255 |
11.4.1. Параметры вида................................................................. |
255 |
11.4.1.1. Использование функции glFrustum............................... |
256 |
11.4.1.2. Использование функции glOrfho................................... |
261 |
11.4.1.3. Использование функции gluOrtho2D............................ |
262 |
11.4.1.4. Использование функции gluPerspective......................... |
264 |
11.4.1.5. Использование функции gluLookAt.............................. |
267 |
11.4.2. Матрицы OpenGL.............................................................. |
268 |
11.4.3. Буфер глубины................................................................... |
269 |
11.4.4. Освещение.......................................................................... |
271 |
11.5. Надстройки над OpenGL............................................................ |
276 |
11.6. Создание анимации..................................................................... |
282 |
11.6.1. Использование системного таймера C-H-Builder............ |
282 |
11.6.2. Использование мультимедийного таймера...................... |
288 |
Список литературы...................................................... |
292 |
ВВЕДЕНИЕ
Несколько лет назад рядовому программисту оставалось только мечтать о создании своих собственных программ, рабо тающих в Windows. Единственным средством разработки был Borland C++ for Windows, ориентированный на профессионалов, обладающих серьезными знаниями и опытом.
Бурное развитие вычислительной техники, потребность в эф фективных средствах разработки программного обеспечения при вели к появлению целого ряда систем программирования, ориен тированных на так называемую «быструю разработку», среди ко торых особо следует отметить Microsoft Visual Basic и Delphi. В основе систем быстрой разработки (RAD-систем, Rapid Application Development - среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть работы по генерации кода программы, оставляя программисту работу по конструированию диалоговых окон и написанию функций обработки событий.
Успех и популярность Delphi вызвал желание фирмы Borland распространить методы быстрой разработки на область профес сионального программирования, что и привело к появлению Borland C++Builder. C++Builder - это среда быстрой разработки, в которой в качестве языка программирования используется язык C++Builder (C++Builder Language). Язык C++Builder - это расши ренный C++: например, в C++Builder есть строковый (AnsiString) и логический (bool) типы, которых нет в классическом C++.
С помощью C++Builder можно быстро создавать Windowsпрограммы, причем как консольные приложения Win32, так и ис пользовать графический интерфейс пользователя (GUI - graphical user interface). При создании GUI-приложений Win32 с помощью C++Builder доступна вся мощь языка C++, заключенная в среду RAD. Это означает, что можно создавать интерфейс пользователя
(меню, диалоговые окна, главное окно и т.д.), используя технику drag-and-drop, которая позволяет создавать приложение простым перетаскиванием захваченных мышью визуальных компонентов из палитры компонентов на форму приложения. Инспектор объектов предоставляет возможность оперировать со свойствами и собы тиями компонентов уже на этапе разработки приложения, автома тически задавая значения свойств компонент, создавая заготовки функций обработки событий, которые необходимо наполнять ко дом.
C++Builder изначально разрабатывался компанией Borland Software, а затем её подразделением CodeGear, которое сейчас принадлежит компании Embarcadero Technologies. Первая версия C++Builder вышла в 1997 г. C++Builder первоначально создавалась только для платформы Microsoft Windows. Поздние версии, со держащие кроссплатформенную компонентную библиотеку Borland, поддерживают и Windows, и Linux.
В данном пособии рассматриваются примеры разработки приложений с использованием версии C++Builder 2007.
Создание программ в C++Builder базируется на объектноориентированной технологии с использованием визуального про граммирования. Структурной единицей визуального программи рования является компонент.
Компоненты разработаны на основе модели свойств, методов и событий. Используя редактор форм, можно поместить компо нент в форму и изменять его свойства, доступные на этапе разра ботки. При необходимости можно управлять компонентом во вре мя выполнения программы, изменяя его свойства и вызывая его методы. Кроме того, каждый компонент реагирует на определен ные события (например, нажатие клавиши или перемещение мы ши). Таким образом, компоненты - это объекты, которые можно поместить в форму и управлять ими через свойства, методы и со бытия.
Цель данного учебного пособия - познакомить студентов с технологией визуального проектирования и событийного про
граммирования, показать на конкретных примерах возможности среды разработки, а также дать методику создания программ. Сле дует обратить внимание, что хотя учебное пособие ориентировано на читателя, обладающего определенными знаниями и начальным опытом в области программирования, оно вполне доступно и для начинающих.
В каждой главе рассмотрено создание различных видов при ложений: текстовый и графический редакторы, работа с базами данных, примеры использования компонентов и графической биб лиотеки OpenGL. В конце каждой главы предлагаются контроль ные вопросы для самопроверки. Чтобы применить новые знания на практике, в каждую главу включены упражнения.