Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++Builder. Учебный курс

.pdf
Скачиваний:
14
Добавлен:
15.11.2022
Размер:
9.54 Mб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Пермский национальный исследовательский политехнический университет»

В.В. Павлоградский, В.В. Пальчиковский

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. В конце каждой главы предлагаются контроль­ ные вопросы для самопроверки. Чтобы применить новые знания на практике, в каждую главу включены упражнения.