• Название:

    Д. Осипов Delphi. Профессиональное программиро..


  • Размер: 11.16 Мб
  • Формат: PDF
  • или
  • Сообщить о нарушении / Abuse

Установите безопасный браузер



  • Название: Untitled

Предпросмотр документа

Delphi
Профессиональное
программирование

Дмитрий Осипов

Санкт-Петербург–Москва
2006

Серия «High tech»

Дмитрий Осипов

Delphi. Профессиональное программирование
Главный редактор
Зав. редакцией
Редактор
Художник
Корректор
Верстка

А. Галунов
Н. Макарова
А. Петухов
В. Гренда
О. Макарова
Н. Гриценко

Осипов Д.
Delphi. Профессиональное программирование. – СПб.: Символ-Плюс, 2006. –
1056 с., ил.
ISBN 5-93286-074-X
Книга Д. Осипова «Delphi. Профессиональное программирование» принципиально отличается от стандартных изданий на эту тему. Это и не скороспелое
«полное» руководство по очередной версии Borland® Delphi™, и не рядовой справочник, содержащий перевод файлов помощи к среде программирования. Идея
книги в другом. Автор системно и последовательно излагает концепцию Delphi,
предоставляя читателю не просто инструмент, а профессиональную методику,
позволяющую разрабатывать эффективные приложения для Windows.
Книга рассчитана на подготовленного пользователя ПК, желающего самостоятельно научиться программировать и разрабатывать приложения и базы данных в среде Delphi. Опытные программисты смогут использовать издание как
справочник. В тексте подробно описаны более 80 компонентов VCL, функции
Object Pascal и Win32 API. В первой части книги излагаются основы языка
программирования Delphi, подробно рассматриваются библиотека визуальных
компонентов и процесс разработки собственных компонентов, изучаются динамически подключаемые библиотеки, процессы, многопоточные приложения, особенности межпрограммного взаимодействия, программирование на
Win32 API, особенности построения сетевого программного обеспечения, технологии COM и OLE-automation. Вторая часть книги посвящена проектированию и созданию реляционных баз данных. Рассматриваются реляционная модель данных и язык SQL, изучаются компоненты доступа к данным и отображения данных, базирующиеся на механизмах BDE, ADO и InterBase.
ISBN 5-93286-074-X
© Дмитрий Осипов, 2006
© Издательство Символ-Плюс, 2006
Все права на данное издание защищены Законодательством РФ, включая право на полное или частичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные знаки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм.

Издательство «Символ-Плюс». 199034, Санкт-Петербург, 16 линия, 7,
тел. (812) 324-5353, edit@symbol.ru. Лицензия ЛП N 000054 от 25.12.98.
Налоговая льгота – общероссийский классификатор продукции
ОК 005-93, том 2; 953000 – книги и брошюры.
Подписано в печать 30.03.2006. Формат 70х1001/16 . Печать офсетная.
Объем 66 печ. л. Тираж 2000 экз. Заказ N
Отпечатано с готовых диапозитивов в ГУП «Типография «Наука»
199034, Санкт-Петербург, 9 линия, 12.

Оглавление

Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Часть I. Программирование для Windows в среде Delphi
1.

Язык программирования Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Простейшая программа на Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Основные типы данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Операторы и выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14
15
19
35
43

2. Процедуры и функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Процедуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Особенности объявления и передачи параметров . . . . . . . . . . . . . . . . . . . . . . . . . . .
Перегрузка методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Структура программного модуля стандартного проекта Delphi. . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Приложение 1: файлы проекта Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Приложение 2: русификация консольных приложений . . . . . . . . . . . . . . . . . . . . .

44
45
46
49
49
51
51
52

3. Базовые функции Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Математические функции и процедуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Функции проверки вхождения значения в диапазон . . . . . . . . . . . . . . . . . . . . . . . .
Тригонометрические функции и процедуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Финансовые функции и процедуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Статистические функции и процедуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Процедуры и функции для работы со строками типа AnsiString . . . . . . . . . . . . .
Процедуры и функции для работы со строками типа PChar . . . . . . . . . . . . . . . . . .
Работа с памятью . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Процедуры управления ходом выполнения программы . . . . . . . . . . . . . . . . . . . . .
Разные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55
56
57
58
59
61
65
68
69
70
71

4. Основы работы с файлами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Классификация типов файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Низкоуровневые методы работы с файлами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Управление файлами, дисками и каталогами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4

Оглавление

5. Введение в объектно-ориентированное программирование . . . . . . . . . . 102
Объект и класс. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Инкапсуляция. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Наследование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Полиморфизм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Программирование, управляемое событиями . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

103
107
109
111
112
112

6. Невидимые классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Основа основ – класс TObject. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Класс TPersistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Поток – TStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Основа компонента – класс TComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Элемент управления – класс TControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Оконный элемент управления – класс TWinControl. . . . . . . . . . . . . . . . . . . . . . . .
Обработка событий в классах TControl и TWinControl. . . . . . . . . . . . . . . . . . . . . .
Основа графических элементов управления – класс TGraphicControl . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.

115
119
120
121
125
132
136
147
148

Списки и коллекции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Набор строк – TStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Список – TList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Список строк – TStringList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Список объектов – класс TObjectList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Список компонентов – класс TComponentList . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Коллекция – класс TCollection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

150
152
154
155
157
157
161

8. Стандартные компоненты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Компоненты для редактирования текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Кнопки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Элементы управления – списки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Сетки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

162
172
179
187
195
207

9. Форма, интерфейсы SDI и MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Форма – TForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Интерфейсы SDI и MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Приложение – класс TApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Особенности обработки событий в приложении
и компонент TApplicationEvents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Экран – класс TScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

208
222
227
235
235
238

10. Графическая подсистема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Представление цвета в Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Перо – класс TPen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Кисть – класс TBrush. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Шрифт – класс TFont. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

240
241
243
244

Оглавление
Холст – класс TCanvas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Класс TGraphic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Пиктограмма – класс TIcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Растровое изображение – класс TBitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Метафайл – класс TMetafile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Класс TJPEGImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Универсальное хранилище изображений – класс TPicture. . . . . . . . . . . . . . . . . .
Графические компоненты VCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Работа с графикой методами Win32 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
246
254
257
258
261
263
265
266
270
280

11. Компоненты Win32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Список закладок – TTabControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Блокнот – компонент TPageControl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Иерархическая структура – TTreeView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Графический список – TListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Панель инструментов – TToolBar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Панель состояния – TStatusBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Линейка – TCoolBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Полоса управления – TControlBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Шкала – TTrackBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

281
285
287
302
313
318
321
323
326
327

12. Для тех, кто ценит секунды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Представление даты и времени в Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Процедуры и функции для работы с датой и временем . . . . . . . . . . . . . . . . . . . . .
Функции конвертирования даты и времени в другие типы данных . . . . . . . . . .
Форматирование даты и времени . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Операционная система и таймер. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Таймер – компонент TTimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Компоненты-календари – базовый класс TCommonCalendar . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

328
329
331
332
334
336
337
341

13. Работа с файлами инициализации и реестром Windows . . . . . . . . . . . . . . . 342
Файл инициализации – класс TIniFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Реестр Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Низкоуровневый доступ к реестру – класс TRegistry . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

342
346
349
355

14. Диалог с Microsoft® Windows® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Диалоговые окна сообщений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Диалог выбора каталога . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Диалоги доступа к базе данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Стандартные диалоговые окна Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

356
362
363
363
381

15. Обработка исключительных ситуаций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Защищенные от ошибок секции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Исключительные ситуации библиотеки VCL – класс Exception . . . . . . . . . . . . . 386
Принудительный вызов ИС – команда Raise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

6

Оглавление
Расширенные возможности конструкции try .. except. . . . . . . . . . . . . . . . . . . . . .
Обработка ИС в рамках события OnException приложения TApplication . . . . .
Настройка поведения Delphi при обработке ИС . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .