Архангельский А.Я. Программирование в Delphi 5 — 2-е изд., переработ, и дополн. — М.: ЗАО «Издательство БИНОМ», 2000 г. — 1072 с.: ил. Книга содержит методические и справочные материалы по новой версии широко известной системы визуального объектно-ориентированного программирования Delphi. Рассмотрены такие новые возможности Delphi, как интернационализация приложений, компоненты — серверы СОМ, технологии доступа к данным ADO и InterBase Express. Наряду с Delphi 5 рассматриваются предшествующие версии этой системы, включая и версию Delphi 1, не потерявшую значение при разработке прикладных программ для маломощных компьютеров. Рассмотрена методика построения прикладных программ, реализующих текстовые и графические редакторы, мультипликацию и мультимедиа, работу с базами данных, построение справочных систем, отчетов, интерфейсов к внешним программам. Справочная часть книги содержит материалы по языку Object Pascal, функциям Delphi и API Windows, компонентам и классам Delphi, их свойствам, методам и событиям. Книга рассчитана как на начинающих, владеющих только основами какого-нибудь языка программирования, так и на опытных разработчиков.
Содержание

От автора............................ 27

Чем эта книга отличается от других книг о Delphi............ 27

Что вы найдете в этой книге...................... 29

Чего вы не найдете в этой книге................„..... 31

Рекомендации по работе с книгой.................... 31

Благодарности............................. 32

ЧАСТЬ I. Объектно-ориентированное

визуальное программирование............ 33

Глава 1. Принципы объектно-ориентированного

визуального программирования........... 35

1.1 Объектно-ориентированное программирование.......... 35

1.2 Объект, свойства, методы, события............... 36

1.3 Основы визуального программирования интерфейса....... 38

1.4 Предварительные сведения о классах и наследовании....... 39

1.5 Системы быстрой разработки приложений............ 40

1.6 Язык объектно-ориентированного проектирования Object Pascal. . 41

1.6.1 Введение............................. 41

1.6.2 Структура файла головной программы приложения Delphi...... 41

1.6.3 Структура модуля........................ . 43

1.6.4 Области видимости и доступ к объектам, переменным

и функциям модуля...................'..... 45

1.6.4.1 Структура модуля, содержащего объекты и процедуры........ 45

1.6.4.2 Доступ к свойствам и методам объектов............... 47

1.6.4.3 Различие переменных, функций и процедур, включенных

и не включенных в описание класса................ 47

1.6.4.4 Области видимости переменных и функций............. 48

1.6.4.6 Передача параметров в функции.................. 49

Глава 2. Система визуального объектно-ориентированного

проектирования Delphi................ 51

2.1 Что может Delphi...........,........... 51

2.2 От Delphi 1 к Delphi .5..................... 52

2.3 Интегрированная Среда Разработки (ИСР) Delphi......... 53

2.3.1 Общий вид окна ИСР....................... 53

2.3.2 Полоса главного меню и всплывающие меню............ 55

2.3.3 Быстрые кнопки......................... 56

2.3.4 Палитра компонентов....................... 58

2.3.5 Окно формы........................... 59

2.3.6 Окно Редактора Кода....................... 60

2.3.7 Инспектор Объектов..................... .... 61

2.3.8 Перетаскивание и встраивание окон в ИСР Delphi 5......... 64

2.3.9 Управление конфигурациями окон ИСР.............. 65

2.4 Первые шаги первые собственные приложения........66

2.4.1 Очень простое приложение..................... 66

2.4.2 Немного более сложное приложение................ 69

2.5 Проекты Delphi....................... . 71

2.5.1 Организация проекта в Delphi, основные файлы проектов...... 71

2.5.2 Создание и сохранение нового проекта............... 74

2.5.2.1 Организация каталогов проекта ................... 74

2.5.2.2 Создание нового проекта...................... .75

2.5.2.3 Сохранение проекта, его повторное открывание,

включение проекта в Депозитарий................. 79

2.5.3 Менеджер проекта........................ 81

2.5.3.1 Менеджер проекта в Delphi 1 — 3.................. 81

2.5.3.2 Менеджер проектов в Delphi 5 и 4 управление группами проектов . 81

2.5.4 Планирование работ список To-Do List.............. 84

2.5.5 Завершение проекта, задание учетной информации......... 87

2.6 Включение в проект форм...................89

2.6.1 Зачем надо включать в проект новые формы............ 89

2.6.2 Включение в проект новой формы................. 89

2.6.3 Совместное владение формой несколькими приложениями...... 90

2.6.4 Создание отдельной копии формы................. 91

2.6.5 Заимствование форм из Депозитария................ 91

2.6.6 Просмотр форм и модулей без включения их в проект........ 92

2.7 Размещение компонентов на форме............... 92

2.7.1 Перенос компонентов со страниц библиотеки на форму.......92

2.7.2 Родители и владельцы компонентов — Parent и Owner.......-94

2.7.3 «Многослойное» размещение компонентов на форме.........95

2.7.4 Поиск «пропавших» компонентов.................96

2.7.5 Работа с группой компонентов, выравнивание

компонентов по размеру и положению...............96

2.7.6 Фиксация компонентов......................99

2.8 Инструментальные средства поддержки разработки кода.....100

2.8.1 Применение Code Insight Знатока Кода.............100

2.8.2 Исследователь Кода Code Explorer.................101

2.8.3 Просмотр иерархии классов, модулей и глобальных

символов — Object Browser....................102

2.8.4 Получение информации о классах, свойствах,

методах из окна Редактора Кода.................104

2.8.5 Навигация в коде, закладки и дополнительные окна редактирования ...... -...................104

2.8.6 Справочная система Delphi и программа

ее конфигурирования OpenHelp..................105

2.9 Отладка приложений.....................' 107

2.9.1 Варианты компиляции и сообщения компилятора......... 107

2.9.2 Что делать, если произошла ошибка выполнения.......... 110

2.9.3 Окно наблюдения Watches.................... 112

2.9.4 Окно оценки и модификации Evaluate/Modify...........114

2.9.5 Выполнение приложения по шагам................ 116

2.9.6 Точки прерывания........................ 118

2.9.7 Использование окна Инспектора Отладки Debug Inspector..... 122

2.9.8 Протокол событий, функция OutputDebugString.......... 124

2.9.9 Некоторые приемы программирования, встраивающие

отладку в код..........................125

2.10 Настройка Интегрированной Среды

Проектирования Delphi и ее компонентов...........128

2.10.1 Настройка инструментальных панелей.........;.-.'... 128

2.10.2 Настройка палитры компонентов..............> . . 130

2.10.3 Настройка Редактора Кода.................... 130

2.10.4 Настройка Code Insight Знатока Кода............. 132

2.10.5 Настройка Исследователя Кода Code Explorer и Object Browser. . . 133

2.10.7 Общие настройки среды..................... 134

2.10.8 Настройка отладчика...................... 135

Глава 3. Обзор компонентов библиотеки Delphi........ 139

3.1 Страницы палитры компонентов................ 139

• 3.2 Компоненты ввода и отображения текстовой информации . . . . 141

3.2.1 Перечень компонентов ввода и отображения текстовой информации . 141

3.2.2 Отображение текста в надписях компонентов

Label, StaticText и Panel..................... 143

3.2.3 Окна редактирования Edit и MaskEdit............... 145

3.2.4 Многострочные окна редактирования Memo и Richedit....... 149

3.2.5 Компоненты выбора из списков — ListBox, CheckListBox

и ComboBox.........•.................. 153

3.2.6 Таблица строк компонент StringGrid.............. 155

3.3 Ввод и отображение чисел, дат и времени............ 157

3.3.1 Перечень компонентов ввода и отображений чисел, дат и времени. . 157

3.3.2 Ввод и отображение целых чисел компоненты

UpDown и SpinEdit........................ 158

3.3.3 Ввод и отображение дат и времени

компоненты DateTimePicker, MonthCalendar, Calendar....... 159

3.3.4 Страницы Excel компонент FIBook............... 160

3.4 Обеспечение синтаксически правильного

ввода текстовых и цифровых данных.............. 162

3.5 Компоненты отображения заголовков

и иерархических данных................... 163

3.5.1 Перечень компонентов...................... 163

3.5.2 Секционированное отображение текстов

компоненты HeaderControl и Header............... . 164

3.5.3 Компоненты отображения иерархических данных

TreeView, Outline, ListView................... 165

3.6 Отображение графической и мультимедиа информации..... 173

3.6.1 Перечень компонентов отображения графической информации ... 173

3.6.2 Таблицы изображений компоненты DrawGrid и StringGrid .... 174

3.6.3 Компонент Shape......................... 175

3.6.4 Компонент Chart......................... 175

3.6.5 Компоненты страницы ActiveX — FIBook, Chartfx, Graph..... 180

3.6.6 Отображение мультимедиа и иной информации

компоненты Animate, MediaPlayer, ProgressBar, Gauge....... 183

3.7 Кнопки, индикаторы, управляющие элементы......... 185

3.7.1 Общая характеристикая..................... 185

3.7.2 Управляющие кнопки Button-и BitBtn............... 187

3.7.3 Кнопка с фиксацией SpeedButton................. 190

3.7.4 Группы радиокнопок компоненты RadioGroup,

RadioButton и GroupBox..................... 190

3.7.5 Индикаторы CheckBox и CheckListBox............... 192

3.7.6 Ползунки и полосы прокрутки компоненты TrackBar и ScrollBar . . 193

3.7.7 Таймер компонент Timer.................... 195

3.8 Компоненты меню..................... 196

3.8.1 Главное меню компонент MainMenu............. . 196

3.8.2 Контекстное всплывающее меню компонент PopupMenu ..... 200

3.8.3 Горячие клавиши компонент HotKey.............. 201

3.9 Панели и компоненты внешнего оформления.......... 204

3.9.1 Общая характеристика . ..................... 204

3.9.2 Панели общего назначения компоненты Panel,

GroupBox, Bevel, ScrollBox, Splitter................ 206

3.9.3 Многостраничные панели компоненты TabControl,

PageControl, TabSet, TabbedNoteBook, NoteBook.......... 207

3.9.4 Инструментальные панели компоненты ToolBar и PageScroller . . 210

3.9.5 Перестраиваемые панели компоненты CoolBar и ControlBar . . . 213

3.9.6 Полоса состояния StatusBar.................... 215

3.9.7 Фреймы............................. 216

3.10 Системные диалоги..................... 222

3.10.1 Общая характеристика компонентов диалогов......... 222

3.10.2 Диалоги открытия и сохранения файлов компоненты OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog . . . 224

3.10.3 Фрагменты диалогов компоненты DriveComboBox, DirectoryListBox, FilterComboBox, FileListBox и DirectoryOutline . . 229

3.10.4 Диалог выбора шрифта компонент FontDialog......... 231

3.10.5 Диалог выбора цвета компонент ColorDialog.......... 233

3.10.6 Диалоги печати и установки принтера

компоненты PrintDialog и PrinterSetupDialog........... 234

3.10.7 Диалоги поиска и замены текста компоненты

FindDialog и ReplaceDialog.................... 236

3.11 Компоненты организации управления приложением...... 240

3.11.1 Общая характеристика..................... 240

3.11.2 Диспетчеризация событий компоненты,

связанные с ActionList.................... 241

3.11.3 Список изображений компонент ImageList........... 244

3.11.4 Приложение компонент ApplicationEvents

и объект Application...................... 245

ЧАСТЬ II. Разработка приложений для Windows........253

Глава 4. Проектирование графического интерфейса

пользователя.....................255

4.1 Требования к интерфейсу пользователя приложений

для Windows .......................... 255

4.1.1 Общие рекомендации по разработке графического интерфейса. . . . 265

4.1.2 Многооконные приложения.................... 256

4.1.3 Стиль окон приложения..................... 256

4.1.4 Цветовое решение приложения .................. 262

4.1.5 Шрифты текстов......................... 263

4.1.6 Меню.............................. 264

4.1.6.1 Требования к меню........................ 264

4.1.6.2 Методика проектирования меню и инструментальной панели .... 268

4.1.7 Компоновка форм........................270

4.1.8 Последовательность фокусировки элементов............271

4.1.9 Подсказки и контекстно-зависимые справки............273

4.2 Проектирование окон с изменяемыми размерами ........279

4.2.1 Выравнивание компонентов свойство Align...... ... . .279

4.2.2 Изменение местоположения и размеров компонентов....... . 281

4.2.3 Панели с перестраиваемыми границами.............. 283

4.2.4 Ограничение пределов изменения размеров окон и компонентов. . . 284

4.2.5 Масштабирование компонентов.................. 286

4.3 Обработка событий клавиатуры и мыши............ 288

4.3.1 События мыши ......................... 288

4.3.1.1 Последовательность событий..................... 288

4.3.1.2 Распознавание источника события, нажатых кнопок и клавиш, координат курсора........................ 291

4.3.2 События клавиатуры....................... 293

4.3.2.1 Последовательность событий.................... 293

4.3.2.2 Распознавание нажатых клавиш.................. 295

4.4 Перетаскивание объектов................... 298

4.4.1 Перетаскивание информации об объектах

технология Drag&Drop...................... 298

4.4.2 Перетаскивание и встраивание объектов — Drag&Doc.

Плавающие окна......................... 301

4.4.3 Буксировка компонентов в окне приложения........., . 308

4.5 Формы............................ 313

4.5.1 Управление формами....................- • • 313

4.5.2 Модальные формы........................ 317

4.5.3 Пример приложения с модальными формами заставки

и запроса пароля......................... 318

4.5.4 Управление формами в приложениях с интерфейсом

множества документов (приложениях MDI) ............ 321

4.5.5 Пример приложения с интерфейсом множества

документов простой многооконный редактор ......... . 323

4.5.6 Объект Screen и приложения, работающие с нескольким мониторами . 326

4.6 Печать и разработка отчетов.................. 329

1 4.6.1 Печать с помощью различных функций.............. 329

4.6.1.1 Печать с помощью функций файлового ввода/вывода........ 329

4.6.1.2 Печать форм методом Print.................... 329

4.6.1.3 Методы компонентов, обеспечивающие печать........... 330

4.6.1.4 Печать файлов средствами стандартных приложений Windows

с помощью функции SheliExecute и обращения к серверам СОМ . . . 330

4.6.2 Печать с помощью объекта Printer................ 331

4.6.3 Подготовка и печать отчетов с помощью QuickReport........ 332

4.7 Развертывание приложений.................. 340

4.7.1 Интернационализация приложений................ 340

4.7.2 Установка и настройка приложения: работа с системным реестром . 346

4.7.3 Установка и настройка приложения: работа с файлами .INI..... 350

Глава 5. Графика и мультимедиа...............355

5.1 Построение графических изображений............. 355

i 5.1.1 Использование готовых графических файлов............355

5.1.1.1.Компонент Image и некоторые его свойства............. 355

5.1.1.2 Простое приложение для просмотра графических файлов ....... 357

5.1.1.3 Форматы графических файлов...................358

5.1.1.4 Классы для хранения графических объектов TPicture, TBitMap,

TIcon и TMetafile.........................358

5.1.2 Редактор Изображений Image Editor................ 360

5.1.2.1 Создание файла изображения...................360

5.1.2.2 Создание пиктограммы для шаблона компонента в библиотеке. . . . 362

5.1.2.3 Создание пиктограммы для кнопки................363

5.1.2.4 Работа с файлами ресурсов...................... 364

5.1.3 Канва холст для рисования..................366

5.1.3.1 Канва и пиксели.........................366

5.1.3.2 Рисование по пикселям......................366

5.1.3.3 Рисование с помощью пера Реп . . ;...............368

5.1.3.4 Brush кисть . . . .......................371

5.1.4 Пример построения собственного простого

графического редактора . . ...................373

5.1.5 Режимы рисования........................376

5.1.5.1 Режимы пера...........................376

5.1.5.2 Режимы копирования и рисования канвы.............377

5.1.6 Продолжение создания собственного графического редактора .... 379

5.1.7 События OnPaint.........................385

5.2 Мультимедиа и анимация...................387

5.2.1 Звук...............................387

5.2.1.1 Типы звуковых и мультимедиа файлов...............387

5.2.1.2 Процедуры воспроизведения звуков Веер, MessageBeep и PlaySound . . 388

5.2.2 Начала анимации создание собственной мультипликации .... 390

5.2.3 Воспроизведение немых видео клипов компонент Animate .... 397

5.2.4 Универсальный проигрыватель MediaPlayer............400

Глава 6. Взаимодействие приложения с внешними

программами....................405

6.1 Запуск из приложения внешних программ...........405

6.1.1 Запуск внешней программы функцией WinExec..........405

' 6.1.2 Запуск внешней программы и открытие документа

функцией ShellExecute......................407

6.2 Управление окнами внешних программ.............409

6.2.1 Определение дескриптора окна приложения............409

6.2.2 Некоторые функции API Windows для управления окнами.....411

6.3 Сообщения Windows и их обработка..............412

6.3.1 Обработка сообщений в приложениях Delphi............412

6.3.2 Посылка сообщений.......................414

6.3.2.1 Функция SendMessage......................414

6.3.2.2 Функция PostMessage......................414

6.3.2.3 Пример посылки сообщений ....................414

6.3.3 Обработка сообщений.......................416

6.3.4 Определение собственных сообщений...............419

6.4 Внедрение и связывание объектов — OLE............420

6.4.1 Общие сведения.........................420

6.4.2 Внедрение и связывание.....................421

6.4.3 Автоматизация OLE.......................425

6.4.4 Компоненты серверы СОМ в Delphi 5..............427

6.4.4.1 Компоненты серверы в Delphi 5........ . . •.......427

6.4.4.2 Свойства и методы сервера Word..................430

6.4.4.3 Тестовый пример работы с сервером Word.............436

6.5 Динамический обмен данными — DDE.............440

6.5.1 Общие сведения.........................440

6.5.2 Установление контакта с сервером................440

6.5.3 Обмен данными между клиентом и сервером............443

6.5.3.1 Построение приложения-сервера..................443

6.5.3.2 Построение приложения-клиента.................445

6.5.3.3 Запрос данных сервера......................445

6.5.3.4 Постоянное отслеживание информации на сервере......... 447

6.5.3.5 Передача информации от клиента к серверу............ 447

Глава 7. Повторное использование разработанных кодов . . . 451

7.1 Способы сохранения и повторного использования кодов.....451

7.2 Создание и хранение шаблонов компонентов ,.........451

7.3 Создание новых компонентов и включение их в библиотеку . . . 454

7.3.1 Начало создания и установка компонента.............454

7.3.2 Анализ класса нового компонента.................458

7.3.2.1 Структура класса компонента...................458

7.3.2.2 Свойства.............................459

7.3.2.3 Методы.............................462

7.3.2.4 События.............................463

7.4 Депозитарий хранилище форм и проектов..........467

7.5 Динамически присоединяемые библиотеки DLL.........472

7.6 Пакеты............................475

7.6.1 Общее описание концепции пакетов................475

7.6.2 Поддержка пакетов.......................476

7.6.3 Разработка собственных пакетов.................479

Глава 8. Разработка справочной системы

(создание файлов .hip)...............483

8.1 Проектирование справочной системы............. . 483

8.2 Создание файла тем справок ..................484

8.2.1 Написание текстов тем.......................484

8.2.2 Сноски.............................486

8.2.2.1 Сноска #.............................486

8.2.2.2 Сноска К.............................486

8.2.2.3 Сноска $.............................487

8.2.2.4 Сноска А.............................488

8.2.2.5 Сноска +..............................488

8.2.2.6 Сноска !.............................488

8.2.2.7 Сноска *.............................488

8.2.2.8 Сноска >.............................488

8.2.3 Переходы............................489

8.2.3.1 Непосредственные переходы....................489

8.2.3.2 Переходы по ключевым словам..................490

8.2.4 Макросы.............................492

8.3 Компиляция и'отладка....................494

8.3.1 Создание файла Проекта справки.................494

8.3.1.1 Кнопка Files...........................495

8.3.1.2 Кнопка Windows...........................496

8.3.1.3 Кнопка Bitmaps..........................497

8.3.1.4 Кнопка Map.............................497

8.3.1.5 Кнопка Alias.............................. 498

8.3.1.6 Кнопка Config..................'..........499

8.3.1.7 Кнопка Data Files...........................499

8.3.1.8 Кнопка Options............................499

8.3.1.9 Создание простого файла Проекта.................501

8.3.2 Компиляция и отладка справки...................501

8.3.3 Файл содержания — .cnt.....................504

8.4 Особенности создания справки, работающей

на любых версиях Windows..................505

8.4.1 Ограничения возможностей справки................505

8.4.2 Синтаксис файла Проекта....................506

8.4.3 Применение Help Workshop DLL для подготовки файла

Проекта в Delphi 1........................509

ЧАСТЬ III. Создание приложений для работы

с базами данных..................511

Глава 9. Приложения для работы с локальными

базами данных...................513

9.1 Базы данных........................ . 513

9.1.1 Принципы построения баз данных................ 513

9.1.2 Типы баз данных.........................616

9.1.2.1 Автономные базы данных..................... 517

9.1.2.2 Файл-серверные базы данных................... 517

9.1.2.3 Базы данных клиент/сервер.................... 518

9.1.2.4 Многоярусные базы данных.................... 518

9.1.3 Технологии СОМ и CORBA.................... 518

9.1.4 Организация связи с базами данных в Delphi........... 520

9.2 Создание баз данных с помощью Database Desktop........ 521

9.2.1 Создание новой таблицы.....................521

9.2.2 Задание полей...........;..............523

9.2.3 Задание свойств таблицы.....................525

9.2.3.1 Validity Checks проверка правильности значений . '....... 525

9.2.3.2 Table Lookup таблица просмотра................. 525

9.2.3.3 Secondary Indexes вторичные индексы.............. 526

9.2.3.4 Referential Integrity целостность на уровне ссылок........ 527

• 9.2.3.5 Password Security — пароли доступа................ 528

9.2.3.6 Table Language язык таблицы.................529

9.2.3.7 Dependent Tables зависимые таблицы..............530

9.2.4 Завершение создания таблицы..................530

9.2.5 Изменение структуры и заполнение таблицы

с помощью Database Desktop...................530

9.3 Создание и редактирование псевдонимов

баз данных и каталогов....................531

9.3.1 Автоматически создаваемые псевдонимы рабочего

и частного каталогов.......................531

9.3.2 Создание и просмотр псевдонимов баз данных

в Database Desktop........................532

9.3.3 Создание и просмотр псевдонимов драйверов

и баз данных в BDE Administrator................534

9.3.4 Создание и просмотр псевдонимов в Database Explorer.......536

9.4 Обзор компонентов, используемых для связи с базами данных . . 538

9.5 Основные свойства компонента Table

и простейшие приложения на его основе............538

9.5.1 Установка связей между компонентами и базой данных,

навигация по таблице ...................... 538

9.5.2 Свойства полей.......................... 542

9.5.3 Перенос полей на форму из Редактора Полей........... 543

9.5.4 Ограничения вводимых значений........ . ........ 546

9.5.5 Вычисляемые поля........................ 547

9.5.6 Фильтрация данных....................... 548

9.6 Использование словарей атрибутов полей.........• • • 552

9.7 Некоторые компоненты визуализации и управления данными . . 555

9.8 Компонент Session...................... 559

9.9 Компонент BatchMove..................... 560

9.10 Приложения с несколькими связанными таблицами ...... 563

9.10.1 Связь головной и вспомогательной таблиц........... . 568

9.10.2 Поля просмотра (lookup fields). . ................ 565

9.11 Программирование работы с базами данных.......... 566

9.11.1 Состояние набора данных.................... 566

9.11.2 Пересылка записи в базу данных................. 567

9.11.3 Кэширование изменений.................... . 568

9.11.4 Доступ к полям......................... 570

9.11.5 Методы навигации....................... 572

9.11.6 Поиск записей......................... 572

9.11.7 Методы установки диапазона допустимых значений........ 574

9.11.8 Методы модификации таблиц.................. 576

9.11.9 Модули данных......................... 577

9.12 Пример программирования работы с базой данных...... . 582

Глава 10. Создание приложений для работы

с базами данных в сети..............587

10.1 Основы языка SQL и его использование

в приложениях........................ 587

10.1.1 Общие сведения......................... 587

10.1.2 Оператор выбора Select................... . . 588

10.1.2.1 Отбор записей из таблицы.................... 588

10.1.2.2 Совокупные характеристики................... 592

10.1.2.3 Вложенные запросы....................... 693

10.1.2.4 Объединения таблиц....................... 594

10.1.3 Операции с записями...................... 596

10.1.4 Операции с таблицами..................... 597

10.1.5 Операции с индексами...................... 600

10.1.6 Компонент Query........................ 601

10.1.6.1 Table или Query что лучше ?...'.•.............. 601

10.1.6.2 Ручная настройка Query...................... 602

10.1.6.3 Визуальный построитель запросов SQL Builder.......... . 603

10.1.6.4 Динамические запросы и параметры Query ... I........ 604

10.1.6.5 Основные свойства Query, связывание таблиц........... 606

10.1.6.6 Основные методы компонента Query............... 607

10.1.6.7 Кэширование изменений, совместное применение Query nUpdateSQL........................... 608

10.1.7 Примеры приложений с использованием Query.......... 611

10.1.7.1 Пример замены Table на Query..................611

10.1.7.2 Пример формирования произвольных запросов SQL ........ 616

10.2 Работа с базами данных в сети................ 619

10.2.1 Транзакции и проблемы многопользовательского

режима работы.........................619

10.2.2 Управление транзакциями, компонент Database..........620

10.2.3 Работа с SQL Monitor.......................623

10.2.4 Управление доступом .'....'................. 624

10.3 InterBase работа на платформе клиент/сервер . . . . . . . . 625

10.3.1 Общие сведения......................... 625

10.3.2 Программа Server Manager................... 625

10.3.3 Windows ISQL......................... 627

10.3.4 Просмотры — Views....................... 631

10.3.5 Хранимые на сервере процедуры................. 632

10.3.5.1 Создание выполняемых процедур................. 632

10.3.5.2 Вызов выполняемых хранимых процедур из приложения......634

10.3.5.3 Хранимые процедуры выбора................... 636

10.4 Доступ к базам данных через

Microsoft ActiveX Data Objects (ADO).............636

10.4.1 Соотношение между компонентами BDE и ADO..........636

10.4.2 Задание соединения компонентов ADO с базой данных......638

10.4.3 Соединение с помощью компонента ADOConnection,

управление транзакциями....................645

10.4.4 Компоненты наборов данных ADOTable, ADOQuery, ADOStoredProc, ADODataSet...................648

10.4.5 Выполнение команд компонентами TADOCommand

и ADOConnection........................653

10.5 Доступ к InterBase через InterBase Express (IBX)........654

10.5.1 Технология InterBase Express (IBX)...............654

10.5.2 Компоненты IBDatabase и IBTransaction.............656

10.5.3 Компоненты наборов данных IBTable, IBQuery, IBStoredProc. . . . 659

Глава 11. Обработка и документирование данных.......661

11.1 Многомерный анализ данных компоненты Decision Cube .... 661

11.1.1 Настройка компонентов приложения............... 661

11.1.2 Управление выполняющимся приложением............ 665

11.1.3 Компонент DecisionPivot..................... 667

11.1.4 Компонент DecisionGraph.................... 668

11.2 Создание отчетов....................... 669

11.3 Использование серверов СОМ для документирования данных . .674

11.4 Работа с базами данных и приложениями

Delphi из Microsoft Word................... 681

11.4.1 Создание макроса для вызова приложения Delphi......г ' ' ^*

11.4.2 Непосредственная работа в Word с базами данных........685

ЧАСТЬ IV. Справочные сведения...............687

Глава 12. Справочные данные по языку Object Pascal.....689

12.1 Синтаксис языка.......................689

12.2 Компилятор.........................690

12.2.1 Общее описание, директивы компилятора............ 690

12.2.2 Настройка компилятора..................... 691

12.2.3 Директивы условной компиляции................ 693

12.2.4 Некоторые ключевые директивы................. 695

{$С+} и {$С-}, {$ASSERTIONS ON} и {$ASSERTIONS OFF}

директивы проверки утверждений....................695

{$!+} и {$!-}, {$IOCHECKS ON} и {$IOCHECKS OFF}

директивы контроля ввода-вывода....................696

{$Q+} и {$Q-}, {$OVERFLOWCHECKS ON} и ($OVERFLOWCHECKS OFF}

директивы проверки переполнения при целочисленных операциях.....697

{$R+} и {$R-}, {$RANGECHECKS ON} и {$RANGECHECKS OFF}

директивы проверки диапазона.....................697

{$М+} и {$М-}, {$TYPEINFO ON} и {$ TYPEINFO OFF}

директивы информации времени выполнения о типах...........698

12.2.5 Некоторые директивы параметров................698

{$М}, {$MINSTACKSIZE}, {$MAXSTACKSIZE}, {$S}

директивы, определяющие размер стека.................698

{$R}, {$RESOURCE} директива связывания ресурсов..........699

12.2.6 Процедура Assert........................700

12.3 Файлы проекта Delphi................... . 701

12.3.1 Основные файлы проекта.................... 701

12.3.2 Структура головного файла программы.............. 702

12.3.3 Структура модуля........................ 704

12.3.4 Предложение uses подключение модулей............ 706

12.3.5 Файлы ресурсов.......................... 707

12.4 Области видимости и время жизни.............. 709

12.5 Константы, переменные, типизированные константы...... 710

12.5.1 Константы и константные выражения.............. 710

12.5.2 Переменные.......................... 711

12.5.3 Типизированные константы................... 713

12.6 Процедуры и функции.................... 713

12.6.1 Объявление и описание функций и процедур.....,..... 713

12.6.2 Различные варианты передачи параметров в функции

и процедуры.......................... 715

12.6.3 Параметры со значениями по умолчанию............. 717

12.6.4 Перегрузка функций...................... 718

12.7 Операции.......................... 719

12.7.1 Общее описание......................... 719

12.7.2 Арифметические операции.................... 719

12.7.3 Операции отношения...................... 720

12.7.4 Булевы операции........................ 721

12.7.5 Логические поразрядные операции............... . 721

12.7.6 Операции со строками...................... 722

12.7.7 Операции с указателями..................... 722.

12.7.8 Операции с множествами.................... 723

12.7.9 Операции с классами...................... 723

12.7.10 Операция @.......................... 724

12.7.11 Приоритет и ассоциативность операций............. 724

12.8 Операторы.......................... 725

12.8.1 Оператор присваивания и его соотношение с методом Assign . . . . 725

12.8.2 Оператор передачи управления goto............... 726

12.8.3 Оператор with.......................... 727

12.8.4 Условные операторы выбора if.................. 727

12.8.5 Условный оператор множественного выбора case......... 728

12.8.6 Оператор цикла for....................... 729

12.8.7 Оператор цикла repeat...................... 731

12.8.8 Оператор цикла while...................... 732

12.8.9 Прерывание цикла: оператор break, процедуры

Continue, Exit и Abort..................... 733

12.9 Динамическое распределение памяти............. 733

12.10 Исключения........................ 735

12.10.1 Исключения и их стандартная обработка............ 735

12.10.2 Иерархия классов исключений в Delphi............. 736

12.10.3 Базовый класс исключений Exception.............. 741

12.10.3.1 Свойства исключений...................... 741

12.10.3.2 Конструкторы исключений................... 742

12.10.4 Защита кода зачистки в блоках try ... finally.......... 744

12.10.5 Защита кода зачистки на уровне модуля

раздел finalization....................... 744

12.10.6 Обработка исключений в блоках try ... except.......... 745

12.10.6.1 Синтаксис блоков try ... except и операторов on...do........ 745

12.10.6.2 Последовательность обработки исключений............ 747

12.10.7 Преднамеренная генерация исключений............. 748

12.10.7.1 Оператор raise.........................748

12.10.7.2 Исключение EAbort и функция Abort..............749

12.10.8 Создание своего типа исключения................750

12.11 Сообщения Windows и их обработка.............752

Глава 13. Типы данных в языке Object Pascal.........755

13.1 Классификация типов данных, объявление типов.......755

13.2 Приведение типов......................756

13.3 Порядковые типы данных.................. 757

13.4 Целые типы данных.....................758

13.5 Действительные типы данных................759

13.6 Булевы типы данных.....................759

13.7 Символьные типы данных..................760

13.8 Типы строк..................х...... . 761

13.9 Перечислимые типы.....................764

13.10 Ограниченные типы.....................765

13.11 Множества.........................766

13.12 Тип variant.........................767

13.13 Указатели.........................769

13.14 Файлы...........................770

13.14.1 Способы организации файлового ввода/вывода.......... 770

13.14.2 Типы файлов.........................772

13.14.2.1 Текстовые файлы.......................772

13.14.2.2 Файловый ввод/вывод с помощью компонентов..........772

13.14.2.3 Типизированные файлы....................773

13.14.2.4 Нетипизированные файлы...................774

13.14.3 Использование дескрипторов файлов..............774

13.15 Массивы..........................775

13.15.1 Статические массивы......................775

13.15.1.1 Одномерные массивы.................•.....775

13.15.1.2 Многомерные массивы..................... 777

13.15.2 Операции с массивами, передача массивов как параметров .... 778

13.15.3 Параметры в виде открытых массивов..............779

13.15.4 Параметры в виде открытых массивов констант.........780

13.15.5 Динамические массивы.....................781

13.15.5.1 Одномерные динамические массивы...............781

13.15.5.2 Многомерные динамические массивы..............783

13.16 Записи...........................784

13.16.1 Объявление и использование записей.............. 784

13.16.2 Самоадресуемые записи....................785

13.17 Классы...........................786

13.17.1 Объявление класса.......,....'............. 786

13.17.2 Свойства................. . . ........ 787

13.17.3 Методы и их наследование, полиморфизм............ 789

13.17.4 Конструкторы и деструкторы.................. 790

13.17.5 События............................ 791

Глава 14. Справочные данные по интегрированной

среде разработки Delphi...............793

14.1 Структура меню Delphi....................793

14.1.1 Меню файлов File....................... . 793

14.1.2 Меню редактирования EDIT...................798

14.1.3 Меню поиска Search.......................800

14.1.4 Меню просмотра View......................801

14.1.5 Меню проекта Project......................804

14.1.6 Меню компиляции Compile в Delphi 1............: . 806

14.1.7 Меню выполнения Run..................... 806

14.1.8 Меню компонентов Component..................808

14.1.9 Меню баз данных Database....................808

14.1.10 Меню опций Options в Delphi 1.................809

14.1.11 Меню инструментария Tools..................810

14.1.12 Меню рабочих групп Workgroups................813

14.1.13 Меню справки Help......................813

14.2 Некоторые настройки Интегрированной

Среды Разработки Delphi................... 814

14.2.1 Настройка Редактора Кода....................814

14.2.2 Общие настройки среды.....................819

14.3 Палитра компонентов в Delphi 1...........'. . . . 822

14.3.1 Общее описание.........................822

14.3.2 Страница Standard.......................822

14.3.3 Страница Additional.......................824

14.3.4 Страница Data Access ..................... . 825

14.3.5 Страница Data Controls.....................826

14.3.6 Страница Dialogs........................827

14.3.7 Страница System........................827

14.3.8 Страница Samples........................829

14.4 Палитра компонентов в Delphi 5...............829

14.4.1 Общее описание.........................829

14.4.2 Страница Standard.......................831

14.4.3 Страница Additional.......................833

14.4.4 Страница Win32........................834

14.4.5 Страница System........................ 836

14.4.6 Страница Data Access......................837

14.4.7 Страница Data Controls.....................838

14.4.8 Страница ADO.........................839

14.4.9 Страница InterBase.......................840

14.4.10 Страница Decision Cube.....................841

14.4.11 Страница QReport.......................842

14.4.12 Страница Dialogs........................844

14.4.13 Страница WinS.l........................845

14.4.14 Страница Samples.......................846

14.4.15 Страница ActiveX.......................846

14.4.16 Страница Servers.......................847

Глава 15. Процедуры и функции Object Pascal, Delphi

и API Windows...................849

15.1 Справочные данные общего характера.............849

15.1.1 Коды клавиш................'..........849

15.1.2 Коды ошибок файлового ввода-вывода..............852

15.1.3 Строка описания формата и функция Format...........852

15.2 Математические функции..................855

15.3 Тригонометрические и гиперболические функции.......857

15.4 Процедуры и функции преобразования дат и времени.....858

15.5 Функции обработки строк с нулевым символом в конце .... 860

15.6 Процедуры и функции обработки строк в

стиле Pascal (без нулевого символа в конце)..........862

15.7 Процедуры и функций файлового ввода/вывода........865

15.8 Процедуры и функции управления файлами..........867

15.9 Процедуры динамического распределения памяти.......870

15.10 Прочие процедуры и функции Object Pascal.........871

15.11 Процедуры и функции вызова диалоговых окон........873

15.11.1 Процедуры ShowMessage и ShowMessageFmt. . .........873

15.11.2 Функции MessageDlg, MessageDlgPos

и CreateMessageDialog...................873

15.11.3 Функция TApplication.MessageBox...............876

15.11.4 Функции InputBox и InputQuery................879

15.11.5 Функция SelectDirectory....................880

15.12 Процедуры и функции воспроизведения звуков........883

15.12.1 Веер процедура Object Pascal.................883

15.12.2 Веер функция API Windows.................883

15.12.3 MessageBeep функция API Windows.............884

15.12.4 PlaySound функция API Windows..............885

15.13 Функции API Windows для запуска

из приложения внешних программ..............887

15.13.1 Сообщения об ошибках при запуске внешних программ.....887

15.13.2 Функция ShellExecute.....................888

15.13.3 Функция FindExecutable....................891

15.13.4 Функция WinExec.......................891

15.14 Сообщения Windows....................892

15.14.1 Некоторые функции, константы и типы API Windows, используемые при работе с сообщениями............893

15.14.1.1 PostMessage функция....................893

15.14.1.2 SendMessage функция....................893

15.14.1.3 RegisterWindowMessage функция...............894

15.14.1.4 WM_USER константа....................894

15.14.1.5TMessage тип........................895

15.14.2 Некоторые сообщения Windows.................896

15.14.2.1 WM_ ACTIVATE........................896

15.14.2.2 WM_ACTIVATEAPP......................896

15.14.2.3 WM_CANCELMODE.......................897

15.14.2.4 WM_CLOSE..........................897

15.14.2.5 WM_GETMINMAXINFO.....................897

15.14.2.6 WM_GETTEXT.........................898

15.14.2.7 WM_SETTEXT.........................899

15.15 Некоторые вспомогательные функции API Windows и Delphi . . 900

15.15.1 CloseWindow.......................... 900

15.15.2 EnableWindow......................... 900

15.15.3 FindWindow.......................... 900

15.15.4 GetLastErrore......................... 901

15.15.5 GetLongHint..........................902

15.15.6 GetNextWindow........................ 902

15.15.7GetShortHint......................... 903

15.15.8 GetSystemDirectory......................903

15.15.9 Get Window..........................904

15.15.10 GetWindowsDirectory.....................904

15.15.11 GetWindowText........................905

15.15.12 Point.............................. 906

15.15.13 Rect............................ . 906

15.15.14 Shortcut........................... 907

15.15.15 ShortCutToText........................ 907

15.15.16 TextToShortCut........................ 908

Глава 16. Свойства, методы, события, типы, классы ...... 909

16.1 Свойства.......................... 909

Action................................'. 909

Active................................. 909

Align................................. 910

Anchors................................ 911

AutoCalcFields............................. 912

AutoMerge............................... 912

AutoSelect..................-............. 913

AutoSize................................ 913

Bitmap...........................:..... 913

BlockReadSize............................. 914

BoundsRect............................... 915

Break................................. 916

Brush................................. 917

CanModify . . . . 4.......................... 917

Canvas.................................. 918

Capacity................................ 918

Caption................................. 919

Charset................................. 920

ClientHeight.............................. 921

ClientOrigin.............................. 921

ClientRect............................... 922

ClientWidth.............................. 922

ClipRect................................ 923

Color.................................. 923

ComponentCount............................ 925

Componentlndex............................ 92-5

Components............................... 925

Connected............................... 926

ConnectKind.............................. 926

Constraints............................... 926

ControlCount.............................. 927

Controls................................ 927

ControlState.............................. 928

ControlStyle.............................. 929

CopyMode............................... 931

Count................................. 932

Ctl3D ................................. 933

Cursor.................................. 933

Database................................ 934

DatabaseName............................. 935

DesktopFont........................-...... 935

DragCursor............................... 936

DragKind................................ 936

DragMode............................... 936

DrawingStyle.............................. 936

Enabled ................................ 937

Exists................i................ 937

FieldDefs................................ 937

Font.................................. 938

Grouplndex............................... 939

Handle................................. 940

Height свойство компонента..................... 941

Height свойство шрифта....................... 941

HelpContext.............................. 941

Hint.................................. 942

Imagelndex............................... 944

IndexDefs............................... 944

Items................................. 945

Left.................................. 946

List.................................. 946

Mode свойство TBatchMove...................... 946

Mode свойство TPen......................... 947

Name................................. 948

Parent................................. 949

ParentFont............................... 949

ParentColor............................... 949

ParentCtlSD.............................. 950

ParentShowHint............................. 950

Pen.................................. 950

PenPos................................. 951

Pitch.................................. 951

Pixels................................. 952

PopupMenu............................... 952

Shortcut................................ 952

ShowHint................................ 953

Showing................................ 953

Size.................................. 953

State.................................. 954

Style свойство TPen......................... 955

Style свойство TBrush........................ 956

Style свойство TFont......................... 956

TableName............................... 957

TabOrder................................ 958

TabStop................................ 958

Tag.................................. 959

Text.................................. 959

TextFlags................................ 959

Top.................................. 960

TransparentColor............................ 960

TransparentMode............................ 961

Visible................................. 961

Width................................. 962

WindowText............................. . 962

16.2 Методы........................... 963

Add.................................. 963

Assign метод графических объектов.................. 964

Assign метод копирования объектов.................. 965

AssignTo................................ 966

BeginDrag............................... 966

BringToFront.............................. 966

BrushCopy............................... 968

CanFocus................................ 968

Cancel................................. 969

ChangeScale............................... 969

Chord................................. 969

ClassName............................... 970

Clear.................................. 971

ClientToScreen.............................. 971

Close.................................. 971

ContainsControl............................. 972

ControlAtPos.............................. 972

CopyRect................................ 972

CrenteTable................................ 973

DblClick................................. 974

Delete................................. 974

Destroy................................ 975

DisableAlign.............................. 975

Dormant............................... . 975

Draw.................................. 976

DrawFocusRect............................. 977

Ellipse................................. 978

EnableAlign.......'....................... 978

Exchange........,........................ 979

Expand................................. 979

FillRect................................ 980

FindNextControl............................ 980

FloodFill................................ 981

Focused................................ 982

FrameRect............................... 982

Free.................................. 983

GetTabOrderList................../.......... 983

HandleAllocated.............................. 984

HandleNeeded.............................. 984

Hide.................................. 984

IndexOf................................ 984

Insert................................. 985

Invalidate............................... 985

LineTo................................. 986

LoadFromClipboardFormat........................ 986

LoadFromFile.............................. 987

LoadFromResourcelD.......................... 987

LoadFromResourceName......................... 987

LoadFromStream............................ 988

Lock.................................. 988

Move.................................. 988

MoveTo................................ 989

MouseCapture.............................. 989

Open.................................. 989

Pie................................... 989

Polygon................................ 990

Polyline................................ 991

Post.................................. 992

Realign................................. 992

Rectangle................................ 992

Refresh................................ 993

Remove................................ 993

Repaint................................ 993

RoundRect............................... 993

SaveToClipboardFormat......................... 994

SaveToFile . . . . :.......................... 995

SaveToStream.............................. 995

ScaleBy................................ 996

ScaleControls.............................. 997

ScreenToClient............................. 997

ScrollBy..............................' ... 997

SelectFirst............................... 998

SelectNext............................... 998

SendCancelMode............................. 999

SendToBack............................... 999

SetBounds...............................1000

SetChildOrder.............................1000

SetFocus...............................1001

SetZOrder........................:...... 1001

Show................................. 1001

StretchDraw ............................. 1002

TextExtent.............................. 1002

TextHeight.............................. 1003

TextOut................................ 1003

TextRect............................... 1004

TextWidth.............................. 1005

TryLock................................ 1005

Unlock................................ 10Q6

Update................................ 1006

16.3 События.......................... 1006

AfterCancel и BeforeCancel....................... 1006

After-Close и BeforeClose........................ 1007

AfterDelete и BeforeDelete....................... 1007

AfterEdit и BeforeEdit......................... 1008

Afterlnsert и Beforelnsert....................... 1008

AfterOpen и BeforeOpen........................ 1008

AfterPost и BeforePost......................... 1009

AfterRefresh и BeforeRefresh...................... 1009

AfterScroll и BeforeScroll........................ 1010

BeforeCancel.............................. 1010

BeforeClose.............................. 1010

BeforeDelete.............................. 1010

BeforeEdit............................... 1010

Beforelnsert.............................. 1010

BeforeOpen.............................. 1010

BeforePost.............................. 1011

BeforeRefresh............................. 1011

BeforeScroll.............................. 1011

OnCalcFields.............................. 1011

OnChange событие класса TCanvas.................. 1011

OnChange событие класса TGraphicsObject.............. 1012

OnChanging.............................. 1012

OnClick................................ 1012

OnCreate............................... 1013

OnDblClick.............................. 1013

OnDeleteError............................. 1014

OnDragDrop.............................. 1014

OnDrngOver.............................. 1016

OnEditError............................'. . 1017

OnEndDrag.............................. 1018

OnEnter................................ 1018

OnExit................................ 1019

OnFilterRecord............................. 1019

OnKeyDown.............................. 1020

OnKeyPress..........................."... 1021

OnKeyUp............................... 1021

OnMouseDown и OnMouseUp...................... 1022

OnMouseMove............................. 1024

OnMouseUp.............................. 1024

OnNewRecord............................. 1024

OnPaint................................ 1024

OnPostError.............................. 1025

OnProgress.............................. 1026

OnStartDrag.............................. 1026

OnUpdnteError............................ 1027

OnUpdateRecord............................ 1028

16.4 Некоторые типы и классы.................. 1029

TBitmap класс . . ......................... 1029

TBrush тип.............................. 1031

TCanvas класс........................... 1032

TColor тип............................. 1035

TComponent базовый класс компонентов............... 1035

TControl базовый класс визуальных компонентов........... 1037

TControlState тип.......................... 1042

TControlStyle тип.......................... 1042

TCursor тип.....*....................... 1043

TCustomEdit базовый класс окон редактирования........... 1043

TDragMode тип........................... 1045

TFont тип............................. 1045

TFontName тип........................... 1046

TGraphic базовый класс графических объектов............ 1046

TIcon класс............................. 1048

TImageList компонент и класс , . .................. 1049

TList класс............................. 1050

TMetafile класс........................... 1052

TObject базовый класс всех объектов................. 1054

TOleServer базовый класс серверов OLE................ 1055

ТРеп тип.............................. 1057

TPicture класс........................... 1058

TPoint тип............................. 1060 .

TRect тип............................. 1060

TStringList класс.......................... 1060

TStrings класс........................... 1062

TWinControl базовый класс оконных компонентов.......... 1064

16.5 Предметный указатель разделов книги,

содержащих описания компонентов............. 1067




Hosted by uCoz