А87 |
Архангельский, А. Я. Программирование в C++Builder 6 [Текст] / А. Я. Архангельский. – М. : БИНОМ, 2002. – 1152 с.
Книга содержит методические и справочные материалы по новой версии системы
визуального объектно-ориентированного программирования C++Builder 6 и предшест
вующим версиям C++Builder 5 и 4. Рассмотрены такие новые возможности
C++Builder, как кросс-платформенные приложения, технологии доступа к данным
ADO, InterBase Express, dbExpress, компоненты - серверы СОМ, технологии распреде
ленных приложений COM, CORBA, MIDAS, новая методика диспетчеризации дейст
вий. Дается методика построения прикладных программ, реализующих текстовые и
графические редакторы, мультипликацию и мультимедиа, работу с базами данных,
создание отчетов, приложений для Интернет, распределенных приложений, клиентов
и серверов. Справочная часть книги содержит материалы по языку С++1, функциям
От автора 19
Почти обо всем в C++Builder 6, 5, 4? 19
Просто о сложном? 20
Чем отличается эта книга от предшествующих 21
Рекомендации по работе с книгой 21
Благодарности 22
ЧАСТЬ 1. C++Builder 6 . 23
Глава 1. C++Builder и современные информационные технологии . . 25
1.1 Объектно-ориентированное программирование 25
1.2 Основы визуального
программирования интерфейса . , 27
1.3 Взаимодействие приложений в
информационных системах 29
1.4 Расдределенные многозвенные приложения 31
1.5 Переносимость данных и программ 32
1.6 Сетевые службы 33
1.7 C++Builder 6 и его место в семействе
программных продуктов Borland. . 35
1.8 Для опытных пользователей: что
нового в I3++Builder 6? 37
1.9 Язык объектно-ориентированного проектирования C++ 42
1.9.1 Введение 42
1.9.2 Общие сведения о программах на C++ 42
1.9.3 Структура головного файла проекта 43
1.9.4 Структура файлов модулей форм 47
1.9.5 Области видимости и доступ к объектам,
переменным и функциям модуля 49
1.9.5.1 Пример модуля, содержащего объекты и процедуры .49
1.9.5.2 Доступ к свойствам и методам объектов 51
1.9.5.3 Различие переменных и функций, включенных
и не включенных в описание класса 52
1.9.5.4 Области видимости переменных и функций . . . '. 53
1.9.5.5 Передача параметров в функции 56
1.9.6 Работа с указателями на объекты 57
1.9.6.1 Указатели на объекты . 58
1.9.6.2 Идентификация объекта неизвестного класса 59
Глава 2. Работа в Интегрированной Среде Разработки
C++Builder 6 63
2.1 Интегрированная Среда Разработки (ИСР) C++Builder 63
2.1.1 Общий вид окна ИСР 63
2.1.2 Полоса главного меню и всплывающие меню 64
2.1.3 Быстрые кнопки. 65
2.1.4 Палитра компонентов 67
2.1.5 Окно формы 69
2.1.6 Окно Редактора Кода 70
2.1.7 Инспектор Объектов 72
2.1.8 Перетаскивание и встраивание окон в ИСР C++Builder 75
2.1.9 Управление конфигурациями окон ИСР 76
2.2 Первые шаги - первые собственные приложения 77
2.2.1 Очень простое приложение 77
2.2.2 Немного более сложное приложение 79
2.3 Проекты C++Builder 81
2.3.1 Организация проекта в C++Builder, основные файлы проектов 81
2.3.2 Создание и сохранение нового проекта . . 85
2.3.2.1 Организация каталогов проекта 85
2.3.2.2 Создание нового проекта 85
2.3.2.3 Сохранение проекта 88
2.3.3 Менеджер проектов 89
2.3.4 Планирование работ - список To-Do List 92
2.3.5 Завершение проекта, задание учетной информации 95
2.4 Включение в проект новой формы 97
2.4.1 Зачем надо включать новые формы 97
2.4.2 Включение в проект новой формы 97
2.4.3 Создание отдельной копии формы 98
2.4.4 Заимствование форм из Депозитария .98
2.4.5 Просмотр форм и модулей без включения их в проект 99
2.5 Размещение компонентов на форме 100
2.5.1 Перенос компонентов со страниц библиотеки на форму 100
2.5.2 Родители и владельцы компонентов - Parent и Owner 101
2.5.3 "Многослойное" размещение компонентов на форме . . 102
2.5.4 Поиск "пропавших" компонентов 103
2.5.5 Окно Object TreeView и страница диаграмм Редактора Кода 103
2.5.6 Работа с группой компонентов, выравнивание компонентов
по размеру и положению 105
2.5.7 Фиксация компонентов 109
2.6 Депозитарий - хранилище форм и проектов 109
2.7 Инструментальные средства поддержки разработки кода 113
2.7.1 Применение Code Insight - Знатока Кода 113
2.7.2 Исследователь Классов ClassExplorer 115
2.7.3 Поддержка разработки, встроенная в окно Редактора Кода 116
2.7.4 Справочная система C++Builder
и программа ее конфигурирования OpenHelp 118
2.8 Отладка приложений 120
2.8.1 Компиляция и компоновка проекта 120
2.8.2 Сообщения компилятора и компоновщика 122
2.8.3 Что делать, если произошла ошибка выполнения 125
2.8.4>Окно наблюдения Watch List 126
2.8.5 Окно оценки и модификации Evaluate/Modify 129
2.8.6 Выполнение приложения по шагам 130
2.8.7 Точки прерывания 132
2.8.8 Использование окна Инспектора Отладки Debug Inspector 137
2.8.9 Протокол событий, функция OutputDebugString 139
2.8.10 Другие средства отладки 140
2.8.11 Некоторые приемы программирования,
встраивающие отладку в код 140
Глава 3. Обзор компонентов библиотеки C++Buiіder 145
3.1 Страницы палитры компонентов 145
3.2 Компоненты ввода и отображения текстовой информации 146
3.2.1 Перечень компонентов ввода и отображения
текстовой информации 146
3.2.2 Отображение текста в надписях компонентов Label, StaticText, Panel . 148
3.2.3 Окна редактирования Edit, LabeledEdit и MaskEdit 150
3.2.4 Многострочные окна редактирования Memo и RichEdit 155
3.2.5 Компоненты выбора из списков - ListBox, CheckListBox, ValueListEditor, ComboBox, ComboBoxEx 160
3.2.6 Таблица строк - компонент StringGrid 168
3.3 Ввод и отображение чисел, дат и времени 170
3.3.1 Перечень компонентов ввода и отображения чисел, дат и времени ... 170
3.3.2 Ввод и отображение целых чисел -
компоненты UpDown и CSpinEdit 171
3.3.3 Ввод и отображение дат и времени -
компоненты DateTimePicker, MonthCalendar, CCalendar 172
3.3.4 Страницы Excel - компонент FIBook 173
3.4 Обеспечение синтаксически правильного
ввода текстовых и цифровых данных 175
3.5 Компоненты отображения иерархических данных 176
3.5.1 Перечень компонентов 176
3.5.2 Компоненты отображения дерева данных - TreeView и Outline .... 176
3.5.3 Отображение информации в стиле папок Windows -
компонент ListView. . 182
3.6 Отображение графической и мультимедиа информации 186
3.6.1 Перечень компонентов отображения графической информации .... 186
3.6.2 Таблицы изображений - компоненты DrawGrid и StringGrid 187
3.6.3 Отображение форм - компонент Shape 189
3.6.4 Графики и диаграммы - компонент Chart 189
3.6.5 Графики и диаграммы - компонент Chartfx 194
3.6.6 Отображение хода длительных процессов -
компоненты ProgressBar и CGauge 196
3.7 Кнопки, индикаторы, управляющие элементы 198
3.7.1 Общая характеристика 198
3.7.2 Управляющие кнопки Button и BitBtn . 199
3.7.3 Кнопка с фиксацией SpeedButton . . . "> 202
3.7.4 Группы радиокнопок - компоненты RadioGroup,
RadioButton и GroupBox 203
3.7.5 Индикаторы CheckBox и CheckListBox 205
3.7.6 Ползунки и полосы прокрутки - компоненты TrackBar и ScrollBar. . . 206
3.7.7 Заголовки - компоненты HeaderControl и Header 207
3.7.8 Таймер - компонент Tinier 208
3.8 Компоненты - меню 209
3.8.1 Главное меню - компонент MainMenu 209
3.8.2 Контекстное всплывающее меню - компонент PopupMenu 214
3.8.3 Горячие клавиши - компонент HotKey 215
3.9 Панели и компоненты внешнего оформления 217
3.9.1 Общая характеристика 217
3.9.2 Панели общего назначения - компоненты Panel,
GroupBox, Bevel, ScrollBox, Splitter 219
3.9.3 Многостраничные панели - компоненты TabControl,
PageControl, TabSet, TabbedNotebook, Notebook 221
3.9.4 Инструментальные панели - компоненты
ToolBar и PageScroller . . . 224
3.9.5 Перестраиваемые панели - компоненты
CoolBar и ControlBar 227
3.9.6 Полоса состояния StatusBar 229
3.9.7 Фреймы 230
3.10 Системные диалоги 237
3.10.1 Общая характеристика компонентов - диалогов 237
3.10.2 Диалоги открытия и сохранения файлов - компоненты
OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog .... 239
3.10.3 Фрагменты диалогов - компоненты
DriveComboBox, DirectoryListBox, FilterComboBox,
FileListBox и CDirectoryOutline 244
ЗЛО.4 Диалог выбора шрифта - компонент FontDialog 246
3.10.5 Диалоги выбора цвета - компоненты ColorDialog и
ColorBox 248
3.10.6 Диалоги печати и установки принтера - компоненты
PrintDialog и PrinterSetupDialog 250
3.10.7 Диалоги поиска и замены текста - компоненты
FindDialog и ReplaceDialog 252
ЧАСТЬ 2. Методика проектирования приложений. 257
Глава 4. Организация управления приложением 259
4.1 Технология разработки приложений 259
4.2 Список изображений - компонент ImageList 262
4.3 Диспетчеризация действий на основе
компонента ActionList 265
4.4 Работа со стандартными действиями 268
4.5 Диспетчеризация действий на основе компонентов ActionManager, ActionMainMenuBar, ActionToolBar, CustomizeDlg 271
4.5.1 Диспетчер действий ActionManager 271
4.5.2 Тестовое приложение 275
4.6 Приложение - компонент ApplicationEvents и
объект Application . . . 279
4.7 Объект Screen и приложения, работающие с
нескольким мониторами. . 285
Глава 5. Разработка графического интерфейса пользователя . . . 289
5.1 Требования к интерфейсу пользователя
приложений для Windows . . . 289
5.1.1 Общие рекомендации по разработке
графического интерфейса 289
5.1.2 Многооконные приложения 291
5.1.3 Стиль окон приложения 291
5.1.4 Цветовое решение приложения 296
5.1.5 Шрифты текстов 298
5.1.6 Меню 299
5.1.7 Компоновка форм ^ 301
5.1.8 Последовательность фокусировки элементов 302
5.1.9 Подсказки и контекстно-зависимые справки 305
5.2 Проектирование окон с изменяемыми размерами 308
5.2.1 Выравнивание компонентов - свойство Align 308
5.2.2 Изменение местоположения и размеров компонентов 311
5.2.3 Панели с перестраиваемыми границами 312
5.2.4 Ограничение пределов изменения размеров окон и
компонентов . . . . 314
5.2.5 Масштабирование компонентов 314
5.3 Обработка событий клавиатуры и мыши 315
5.3.1 События мыши 315
5.3.1.1 Последовательность событий 315
5.3.1.2 Распознавание источника события, нажатых кнопок и клавиш, координат курсора 318
5.3.2 События клавиатуры 321
5.3.2.1 Последовательность событий 321
5.3.2.2 Распознавание нажатых клавиш 322
5.4 Перетаскивание объектов 325
5.4.1 Перетаскивание информации об объектах -
технология Drag&Drop . . . 325
5.4.2 Перетаскивание и встраивание объектов - Drag&Doc.
Плавающие окна 328
5.4.3 Буксировка компонентов в окне приложения 335
5.5 Формы 340
5.5.1 Управление формами 340
5.5.2 Модальные формы . . . 344
5.5.3 Пример приложения с модальными формами заставки
и запроса пароля 346
5.5.4 Управление формами в приложениях с интерфейсом
множества документов (приложениях MDI) 349
5.5.5 Пример приложения с интерфейсом множества
документов - простой многооконный редактор 351
5.6 Печать документов и изображений 354
5.6.1 Печать форм методом Print 354
5.6.2 Методы компонентов, обеспечивающие печать 354
5.6.3 Печать средствами офисных приложений Windows с помощью
функции ShellExecute и обращения к серверам СОМ .355
5.6.4 Печать с помощью объекта Printer 355
5.7 Развертывание приложений 357
5.7.1 Локализация и интернационализация приложения . 357
5.7.2 Установка и настройка приложения: работа с
системным реестром. . . 364
5.7.3 Работа с файлами .ini 369
Глава 6. Графика и мультимедиа 373
6.1 Построение графических изображений 373
6.1.1 Использование готовых графических файлов 373
6.1.1.1 Компонент Image и некоторые его свойства 373
6.1.1.2 Простое приложение для просмотра
графических файлов 375
6.1.1.3 Форматы графических файлов 375
6.1.1.4 Классы для хранения графических объектов TPicture,
TBitraap, TIcon и TMetafile 376
6.1.2 Редактор Изображений Image Editor 378
6.1.2.1 Создание файла изображения 378
6.1.2.2 Создание пиктограммы для шаблона
компонента в библиотеке 380
6.1.2.3 Создание пиктограммы для кнопки 381
6.1.2.4 Работа с файлами ресурсов 382
6.1.3 Канва - холст для рисования 384
6.1.3.1 Канва и пикселы 384
6.1.3.2 Рисование по пикселам 385
6.1.3.3 Рисование с помощью пера Реп. . . 386
6.1.3.4 Brush - кисть > 390
6.1*.4 Пример построения собственного простого
графического редактора . . . 391
6.1.5 Режимы рисования 395
6.1.5.1 Режимы пера 395
6.1.5.2 Режимы копирования и рисования канвы 396
6.1.6 Продолжение создания собственного
графического редактора 398
6.1.7 События OnPaint 405
6.2 Мультимедиа и анимация 407
6.2.1 Звук 407
6.2.1.1 Типы звуковых и мультимедиа файлов 407
6.2.1.2 Процедуры воспроизведения звуков Веер, ageBeep и
PlaySound . . . 408
6.2.2 Начала анимации - создание собственной мультипликации 411
6.2.3 Воспроизведение немых видео клипов - компонент Animate 418
6.2.4 Универсальный проигрыватель MediaPlayer 421
Глава 7. Процессы, потоки, распределенные приложения 427
7.1 Общие сведения 427
7.2 Порождение дочерних процессов 427
7.2.1 Запуск внешней программы функцией execlp 428
7.2.2 Запуск внешней программы функцией spawnlp 429
7.2.3 Запуск внешней программы функцией WinExec 432
7.2.4 Порождение процесса функцией CreateProcess 434
7.2.5 Запуск внешней программы и открытие документа
функцией ShellExecute 436
7.3 Управление окнами внешних программ 439
7.3.1 Определение дескриптора окна приложения 439
7.3.2 Некоторые функции API Windows для
управления окнами 441
7.4 Сообщения Windows и их обработка 441
7.4.1 Обработка сообщений в приложениях C++Builder 441
7.4.2 Посылка сообщений 443
7.4.2.1 Функции SendMessage, PуstMessage и Perform 443
7.4.2.3 Пример посылки сообщений 443
7.4.3 Обработка сообщений 445
7.4.4 Определение собственных сообщений 448
7.5 Динамический обмен данными - DDE . . і 450
7.5.1 Общие сведения 450
7.5.2 Установление контакта с сервером . 450
7.5.3 Обмен данными между клиентом и сервером 453
7.5.3.1 Построение приложения-сервера 453
7.5.3.2 Построение приложения-клиента 454
7.5.3.3 Запрос данных сервера 455
7.5.3.4 Постоянное отслеживание информации на сервере 457
7.5.3.5 Передача информации от клиента к серверу 457
7.6 Организация приложений с несколькими потоками 459
7.6.1 Класс TThread 459
7.6.2 Пример 463
7.6.3 Более сложный пример 468
7.7 Внедрение и связывание объектов - OLE 472
7.8 Технология СОМ 478
7.8.1 Основные понятия СОМ 478
7.8.2 Реализация внутреннего сервера СОМ и его клиента 480
7.8.3 Реализация и использование локальных серверов СОМ 486
7.8.4 Элементы ActiveX . 491
7.9 Компоненты-серверы СОМ 495
7.9.1 Компоненты-серверы СОМ в C++Builder би 5 495
7.9.2 Свойства и методы сервера Word 499
7.9.3 Тестовый пример работы с сервером Word . 505
7.10 Технология CORBA , 510
7.10.1 Общее описание . . . *> 510
7.10.2 Реализация CORBA в C++Builder 510
Глава 8. Различные виды проектов C++Builder 513
8.1 Кросс-платформенные проекты CLX 513
8.2 Создание и хранение шаблонов компонентов 517
8.3 Создание новых компонентов и включение
их в библиотеку 519
8.3.1 Начало создания и установка компонента 519
8.3.2 Структура класса компонента 522
8.3.3 Задание свойств 524
8.3.4 Создание методов 527
8.3.5 Создание событий 530
8.3.6 Автоматизация разработки классов 534
8.4 Динамически присоединяемые библиотеки DLL 539
8.4.1 Назначение DLL 539
8.4.2 Статическое и динамическое связывание
DLL с приложением 540
8.4.3 Создание DLL 541
8.4.4 Примеры статического и динамического
связывания DLL 545
8.5 Пакеты 547
8.5.1 Общее описание концепции пакетов 547
8.5.2 Поддержка пакетов 548
ЧАСТЬ 3. Базы данных и сети 553
Глава 9. Приложения для работы с локальными базами данных . . 555
9.1 Базы данных 555
9.1.1 Принципы построения баз данных 555
9.1.2 Типы баз данных 558
9.1.2.1 Автономные базы данных 559
9.1.2.2 Файл-серверные базы данных 559
9.1.2.3 Базы данных клиент/сервер 560
9.1.2.4 Многоярусные базы данных 560
9.1.3 Организация связи с базами данных в C++Builder 560
9.2 Создание баз данных с помощью Database Desktop 562
9.2.1 Создание новой таблицы 562
9.2.2 Задание полей 564
9.2.3 Задание свойств таблицы 566
9.2.3.1 Validity Checks - проверка правильности значений 566
9.2.3.2 Table Lookup - таблица просмотра 566
9.2.3.3 Secondary Indexes - вторичные индексы 567
9.2.3.4 Referential Integrity - целостность на уровне ссылок 569
9.2.3.5 Password Security - пароли доступа 570
9.2.3.6 Table Language - язык таблицы 571
9.2.3.7 Dependent Tables - зависимые таблицы 571
9.2.4 Завершение создания таблицы 571
9.2.5 Изменение структуры и заполнение таблицы
с помощью Database Desktop 572
9.3 Создание и редактирование псевдонимов
баз данных, каталогов, драйверов 573
9.3.1 Автоматически создаваемые псевдонимы рабочего
и частного каталогов 573
9.3.2 Создание и просмотр псевдонимов баз данных
в Database Desktop . . . 574
9.3.3 Создание и просмотр псевдонимов драйверов
и баз данных в BDE Administrator 576
9.3.4 Создание и просмотр псевдонимов в SQL Explorer 577
9.4 Обзор компонентов, используемых для
связи с базами данных .... 579
9.5 Основные свойства компонента Table и простейшие приложения
на его основе 580
9.5.1 Установка связей между компонентами -и базой данных,
навигация по таблице 580
9.5.2 Свойства полей 583
9.5.3 Ограничения вводимых значений 585
9.5.4 Вычисляемые поля 586
9.5.5 Фильтрация данных 588
9.6 Использование словарей атрибутов полей 591
9.7 Некоторые компоненты визуализации и
управления данными .... 594
9.8 Компонент Session 598
9.9 Компонент BatchMove 600
9.10 Приложения с несколькими связанными таблицами 602
9.10.1 Связь головной и вспомогательной таблиц 602
9.10.2 Поля просмотра (lookup fields) 603
9.11 Программирование работы с базами данных 605
9.11.1 Состояние набора данных 605
9.11.2 Пересылка записи в базу данных 606
9.11.3 Кэширование изменений 607
9.11.4 Доступ к полям 609
9.11.5 Методы навигации 611
9.11.6 Поиск записей 611
9.11.7 Методы установки диапазона допустимых значений 614
9.11.8 Методы создания и модификации таблиц 615
9.12 Пример программирования работы с базой данных 617
9.13 Модули данных 622
9.14 Клиентские наборы данных 628
9.14.1 Общие сведения , 628
9.14.2 Наборы данных, основанные на файлах 628
9.14.3 Совокупные характеристики 630
9.14.4 Портфельные наборы данных 631
9.14.5 Тестовый пример 633
9.14.6 Клиентские наборы на компоненте BDEClientDataSet 638
Глава 10. Создание приложений для работы
с базами данных в сети 641
10.1 Основы языка SQL и его
использование в приложениях . 641
10.1.1 Общие сведения 641
10.1.2 Оператор выбора Select 642
10.1.2.1 Отбор записей из таблицы 642
10.1.2.2 Совокупные характеристики 644
10.1.2.3 Вложенные запросы 646
10.1.2.4 Объединения таблиц 646
10.1.3 Операции с записями 648
10.1.4 Операции с таблицами 649
10.1.5 Операции с индексами 650
10.1.6 Компонент Query 651
10.1.6.1 Общие сведения 651
10.1.6.2 Динамические запросы и параметры Query 653
10.1.6.3 Основные свойства Query, связывание таблиц 655
10.1.6.4 Основные методы компонента Query 656
10.1.6.5 Кэширование изменений, совместное применение
Query и UpdateSQL . . 657
10.1.7 Пример формирования произвольных запросов SQL 661
10.2 Работа с базами данных в сети 664
10.2.1 Транзакции и проблемы многопользовательского режима работы . . . 664
10.2.2 Управление транзакциями, компонент Database 665
10.2.3 Работа с SQL Monitor 667
10.2.4 Управление доступом 669
10.3 InterBase - работа на платформе клиент/сервер 670
10.3.1 Общие сведения 670
10.3.2 Программа IBConsole 670
10.3.3 Interactive SQL 674
10.3.4 Просмотры - Views 677
C++Builder и API Windows (свыше 570 функций), типам и классам C++Builder, их
свойствам, методам и событиям.
Книга рассчитана как на начинающих, владеющих только основами какого-нибудь языка программирования, так и на опытных разработчиков.
|