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

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



Оглавление
Введение
Часть I. Программирование для Windows в среде Delphi
Глава 1. Язык программирования Pascal
Простейшая программа на Object Pascal Комментарии в тексте программы Компиляция и запуск программы на выполнение Переменные и константы Идентификаторы
Основные типы данных Простые типы данных Строковый тип Структурные типы Указатели Вариантные типы
Операторы и выражения
Резюме
Глава 2. Процедуры и функции
Процедуры Функции Особенности объявления и передачи параметров Перегрузка методов Структура программного модуля стандартного проекта Delphi Резюме Приложение 1: файлы проекта Delphi Приложение 2: русификация консольных приложений
Глава 3. Базовые функции Delphi
Математические функции и процедуры Функции проверки вхождения значения в диапазон Тригонометрические функции и процедуры Финансовые функции и процедуры Статистические функции и процедуры Процедуры и функции для работы со строками типа AnsiString Процедуры и функции для работы со строками типа PChar Работа с памятью Процедуры управления ходом выполненияпрограммы Разные функции Резюме
Глава 4. Основы работы с файлами
Классификация типов файлов Чтение и запись данных Текстовые файлы Типизированные файлы Двоичные файлы Обработка ошибок ввода-вывода
Низкоуровневые методы работы с файлами Асинхронные операции ввода-вывода
Управление файлами, дисками и каталогами Проверка наличия файла и каталога Удаление, копирование и перемещение файлов Имя файла и путь к нему Дата и время создания файла Атрибуты файла Размер файла Организация поиска файлов и каталогов Управление каталогами Работа с дисками компьютера
Резюме
Глава 5. Введение в объектно-ориентированное программирование
Объект и класс Создание и разрушение объекта Операторы класса Методы класса
Инкапсуляция Области видимости Свойства объекта
Наследование
Полиморфизм
Программирование, управляемое событиями
Резюме
Глава 6. Невидимые классы
Основа основ - класс TObject Создание и уничтожение экземпляра класса Информация о классе Поддержка COM
Класс TPersistent
Поток - TStream
Основа компонента - класс TComponent Роль класса TComponent в период разработки компонента
Элемент управления - класс TControl Размеры и размещение элемента управления Выравнивание элемента управления Видимость и активность элемента управления Отображение текста Внешний вид Всплывающая подсказка Взаимодействие с командным объектом Всплывающее меню Свойства и методы Tcontrol, используемые в период разработки компонентов
Оконный элемент управления - класс TWinControl Создание окна Управление подчиненными компонентами Фокус ввода
Обработка событий в классах TControl и TWinControl События манипулятора мышь События клавиатуры и класс TWinControl Перетаскивание - drag-and-drop Буксировка - drag-and-dock
Основа графических элементов управления - класс TGraphicControl
Резюме
Глава 7. Списки и коллекции
Набор строк - TStrings
Список - TList
Список строк - TStringList
Список объектов - класс TObjectList Обладание объектами списка Создание экземпляра списка Редактирование списка Поиск объекта
Список компонентов - класс TComponentList
Коллекция - класс TCollection Элемент коллекции - класс TCollectionItem Создание и уничтожение коллекции Доступ к элементу коллекции Манипуляции с элементами коллекции Поиск элемента коллекции Сравнение коллекций
Резюме
Глава 8. Стандартные компоненты
Компоненты для редактирования текста Основа текстовых редакторов - класс TCustomEdit Строка ввода - класс TEdit Строка ввода с маской - TMaskEdit Многострочный текстовый редактор - компонент TMemo Редактор расширенного текстового формата - компонент TRichEdit
Кнопки Кнопка - TButton Кнопка с рисунком - TBitBtn Переключатель - TRadioButton Группа переключателей - TRadioGroup Флажок - TCheckBox Кнопки изменения значения - TUpDown Быстрая кнопка - TSpeedButton
Элементы управления - списки Простой список - TListBox Список с флажками - TCheckListBox Комбинированный список - TComboBox
Сетки Сетка для рисования - компонент TDrawGrid Сетка строк - компонент TStringGrid
Меню Элемент меню - TMenuItem Класс TMenu Главное меню - компонент TMainMenu Всплывающее меню - компонент TPopupMenu
Резюме
Глава 9. Форма, интерфейсы SDI и MDI
Форма - TForm Полосы прокрутки Создание, показ и уничтожение формы Обработка событий
Интерфейсы SDI и MDI Построение проекта MDI Интерфейс SDI
Приложение - класс TApplication Создание и уничтожение приложения Организация оперативной подсказки Работа со справочной системой Сворачивание и восстановление приложения
Особенности обработки событий в приложении и компонент TApplicationEvents
Экран - класс TScreen Информация об экране Информация о шрифтах системы Информация о формах проекта
Резюме
Глава 10. Графическая подсистема
Представление цвета в Windows
Перо - класс TPen
Кисть - класс TBrush
Шрифт - класс TFont
Холст - класс TCanvas Вывод текста Построение отрезков Простейшие геометрические фигуры Методы для работы с областью Кривые Безье
Класс TGraphic Взаимодействие классов TCanvas и TGraphic
Пиктограмма - класс TIcon
Растровое изображение - класс TBitmap
Метафайл - класс TMetafile Класс TMetafileCanvas
Класс TJPEGImage
Универсальное хранилище изображений - класс TPicture
Графические компоненты VCL Область для рисования - компонент TPaintBox Фигура - компонент TShape Рельефная панель - компонент TBevel Изображение - компонент TImage Анимированное изображение - компонент TAnimate Метка - компонент TLabel
Работа с графикой методами Win32 API Обновление области Координатные системы Режимы отображения Изменение начала координат Формула преобразования координат Пользовательские режимы отображения
Резюме
Глава 11. Компоненты Win32
Список закладок - TTabControl
Блокнот - компонент TPageControl Страница блокнота - TTabSheet
Иерархическая структура - TTreeView Основные информационные характеристики узла TTreeNode Выбор узла Одновременный выбор нескольких узлов Место узла в иерархической структуре Добавление узлов в коллекцию Удаление узлов из коллекции Редактирование текста узла Перемещение узла Сворачивание и разворачивание узла Оформление дерева
Графический список - TListView Элемент списка - TListItem Оформление графического списка Особенности работы в режиме таблицы Колонка - класс TListColumn Операции с данными - коллекция TListItems Выбор элементов графического списка Сортировка элементов списка Поиск элементов списка Операции перерисовки
Панель инструментов - TToolBar Оформление панели инструментов Обслуживание кнопок Кнопка панели инструментов - TToolButton
Панель состояния - TStatusBar
Линейка - TCoolBar Элементарная полоса - TCoolBand
Полоса управления - TControlBar
Шкала - TTrackBar
Резюме
Глава 12. Для тех, кто ценит секунды
Представление даты и времени в Delphi
Процедуры и функции для работы с датой и временем
Функции конвертирования даты и времени в другие типы данных
Форматирование даты и времени
Операционная система и таймер
Таймер - компонент TTimer
Компоненты-календари - базовый класс TCommonCalendar Календарь - компонент TMonthCalendar Выбор даты/времени - компонент TDateTimePicker
Резюме
Глава 13. Работа с файлами инициализации и реестром Windows
Файл инициализации - класс TIniFile
Реестр Windows Класс TRegistryIniFile
Низкоуровневый доступ к реестру - класс TRegistry Создание и уничтожение экземпляра реестра Работа с удаленным реестром Управление ключами реестра Чтение и запись значений в параметры Получение информации о ключе Получение информации о параметре Архивирование данных из ключей реестра
Резюме
Глава 14. Диалог с Microsoft® Windows®
Диалоговые окна сообщений
Диалог выбора каталога
Диалоги доступа к базе данных
Стандартные диалоговые окна Windows Опорный класс диалогов - TCommonDialog Открытие и сохранение файлов - компоненты TopenDialog и TSaveDialog Открытие и сохранение графических файлов - TOpenPictureDialog и TSave-PictureDialog Поиск и замена текста - компоненты TFindDialog и TReplaceDialog Выбор шрифта - класс TFontDialog Выбор цвета - класс TColorDialog Диалоги принтера - компоненты TprinterSetupDialog и TPrintDialog Параметры страницы - TPageSetupDialog
Резюме
Глава 15. Обработка исключительных ситуаций
Защищенные от ошибок секции Конструкция try..except Конструкция try..finally Вложенные конструкции try
Исключительные ситуации библиотеки VCL - класс Exception EAbort - "тихая" обработка исключительной ситуации EAssertionFailed - исключительная ситуация отладки EOSError - код ошибки операционной системы
Принудительный вызов ИС - команда Raise Определение новых классов ИС
Расширенные возможности конструкции try .. except
Обработка ИС в рамках события OnException приложения TApplication
Настройка поведения Delphi при обработке ИС
Резюме
Глава 16. Создание компонентов
Выбор предка
Эксперт компонентов
Шаблон кода компонента
Создание свойств Публикация унаследованных свойств Организация доступа к полям объекта Классификация свойств
Создание методов Классификация методов Методы Constructor и Destructor Метод Loaded
Создание событий Переопределение поведения стандартных событий
Пиктограмма компонента
Подключение файла справки к компоненту Рекомендации по содержанию файла помощи
Резюме
Глава 17. Централизованное управление приложением
Команда - класс TAction Связывание команды с элементом управления Выполнение команды Установка команды в актуальное состояние Настройка поведения всплывающей подсказки Связь команды со своим контейнером - класс TContainedAction
Компоненты-контейнеры для командных объектов Список команд - класс TCustomActionList
Список команд - класс TActionList
Менеджер команд - класс TActionManager Редактор менеджера команд Взаимодействие менеджера с командными панелями Настройка интерфейса приложения во время его выполнения
Менеджер команд и компоненты пользовательского интерфейса Представитель команды на панели - класс TActionClientItem Базовый класс командных панелей - TCustomActionBar Особенности меню команд - TActionMainMenuBar
Резюме
Глава 18. Построение диаграмм
Компонент TChart Организация хранения графиков в диаграмме Базовый класс графиков - TChartSeries Легенда диаграммы - класс TChartLegend Координатные оси диаграммы - класс TChartAxis Масштабирование Многостраничные диаграммы Экспорт диаграмм Печать диаграммы Упорядочивание графиков внутри диаграммы Обеспечение объемного вида диаграммы
Резюме
Глава 19. Динамически подключаемые библиотеки
Назначение DLL Проектирование приложения, использующего DLL Операционная система и 32-разрядные DLL
Создание шаблона динамической библиотеки в Delphi Инициализация динамической библиотеки Экспортирование функций DLL
Взаимодействие динамической библиотеки с проектом Где следует размещать DLL Явная загрузка DLL Неявная загрузка DLL
Создание библиотеки ресурсов
Анализ DLL
Резюме
Глава 20. Процессы и потоки в среде Windows
Процессы и многозадачность Создание процесса Завершение процесса Сбор информации о процессах, протекающих в системе Приоритет процесса Время выполнения процесса
Понятие потока, многопоточность
Элементарный поток - класс TThread Приоритет потока Время выполнения потока Синхронизация потока с методами VCL
Пример простого многопоточного приложения
Синхронизация процессов и потоков Критическая секция Функции ожидания Синхронизация событием Мьютекс - взаимное исключение потоков Семафор Другие объекты синхронизации
Резюме
Глава 21. Службы Microsoft Windows NT
Администрирование служб в Windows NT
Управление службами из внешних приложений Соединение с менеджером системных служб Windows Общие вопросы регистрации и конфигурирования службы Получение указателя службы Запуск службы Управление службой Построение списка служб системы Исследование службы Конфигурирование службы Удаление службы из системы
Инкапсуляция системной службы в VCL - класс TService Тип службы Идентификация службы в системе Определение прав Особенности загрузки и запуска службы Определение поведения системы при ошибке запуска службы События, связанные с инсталляцией и деинсталляцией службы Старт и остановка службы Параметры запуска службы Текущее состояние службы, изменение состояния Выполнение службы - поток TServiceThread Ведение журнала событий
Приложение-служба - класс TServiceApplication
Пример проекта службы Регистрация службы средствами приложения
Советы по отладке системной службы
Резюме
Глава 22. Обмен данными между процессами
Буфер обмена - класс TClipboard
Обмен сообщениями между процессами
Динамический обмен данными Реализация DDE в библиотеке визуальных компонентов Пример приложений сервера и клиента DDE
Файлы, отображаемые в память
Резюме
Глава 23. Обмен данными в сети
Модель взаимодействия открытых систем
Почтовые слоты Адрес почтового слота Создание почтового слота Чтение корреспонденции Передача корреспонденции
Место класса THandleStream в обеспечении сетевогообмена данными
Введение в Network DDE
Каналы Создание именованного канала Управление соединением с клиентом Информирование о канале Подключение к именованному каналу клиентскогоприложения Пример простейшего компонента-сервера именованногоканала Пример простейшего компонента-клиента именованногоканала
Интерфейс сокетов Понятие IP-адреса Порты для Microsoft TCP/IP
Реализация интерфейса WinSock в VCL Базовый класс сокетов - TBaseSocket Сетевая поддержка сокетов - класс TIPSocket Серверное окончание WinSock - компонент TTCPServer Клиентское окончание WinSock - компоненты TTCPClient иTUDPSocket
Пример проекта WinSock для сети интранет Клиентское приложение Серверное приложение
Сокет - TRawSocket
Резюме
Глава 24. Многокомпонентная модель объектов(COM)
Элементы COM-приложения
COM-объект
Интерфейс Особенности определения интерфейсов в Delphi Реализация интерфейса Директива Implements Базовый класс интерфейсов в Delphi - интерфейс IUnknown
Порядок вызова сервера клиентским приложением Особенности создания экземпляра COM-объекта
Реализация COM-объекта в Delphi - класс TComObject
Пример COM-проекта Внешний COM-сервер Приложение COM-клиент Обращение к COM-объекту
Резюме
Приложение: редактор библиотеки типов
Глава 25. Сотрудничество с Microsoft® Office
Интерфейс IDispatch
Инициализация и деинициализация объектаавтоматизации
Коллекция объектов
Текстовый процессор Microsoft® Word Интерфейс приложения Word - IApplication Коллекция документов (IDocuments) и отдельный документ (IDocument) Параметры страницы - интерфейс IPageSetup Раздел документа - интерфейс ISection Область документа IRange, вставка и удаление текста Список абзацев (IParagraphs) и абзац документа (IParagraph) Списки Коллекция таблиц (ITables) и отдельная таблица (ITable) Внедрение в документ OLE-объектов Вставка номера страницы
Пример универсального генератора отчетов
Электронные таблицы Microsoft® Excel Интерфейс приложения Excel - IApplication Книга - интерфейс IWorkBook Листы Excel Коллекция ячеек - IRange
Пример универсального генератора отчетов (продолжение)
Резюме
Глава 26. Связывание и внедрение объектов - технология OLE
Место OLE-серверов в реестре Windows OLE-контейнер - компонент TOLEContainer Пример приложения OLE-контейнера Резюме
Глава 27. Программирование на Win32 API
Создание приложения без применения VCL Дескрипторы и структуры Описание класса окна Регистрация класса окна Создание окна Отображение окна и его перерисовка Организация цикла обработки сообщений Оконная процедура Листинг программы Отправка сообщений окну
Получение информации о системе Имя компьютера Имя пользователя Состояние памяти Версия операционной системы Системная информация
Запуск программ
Завершение работы
Резюме
Глава 28. Создание апплетов панели управления
Стандартные апплеты панели управления Windows Апплет панели управления - класс TAppletModule Приложение панели управления - класс TAppletApplication Пример апплета панели управления Регистрация апплета панели управления Резюме
Глава 29. Пространство имен оболочки Windows
Идентификация объекта оболочки Получение файловых путей и идентификаторов PIDL папок Windows
Интерфейс папки - IShellFolder Получение указателя PIDL по имени объекта Получение пути к файловому объекту по PIDL Получение интерфейса дочерней папки Организация цикла по объектам папки - интерфейс IEnumIDList Сравнение объектов папки Создание визуального объекта Описание объекта Изменение имени объекта Создание элемента пользовательского интерфейса
Резюме
Глава 30. Мультимедиа
Проигрыватель мультимедиа - компонент TMediaPlayer Подготовка к воспроизведению Информация об объекте мультимедиа Пользовательский интерфейс проигрывателя Управление воспроизведением Особенности при работе с видеоклипами Асинхронный и синхронный режимы работы проигрывателя Оценка состояния проигрывателя Обработка событий в проигрывателе Сохранение файла мультимедиа Обработка ошибок Завершение работы Пример работы с TMediaPlayer
Воспроизведение звука средствами Win32 API
Резюме
Часть II. Разработка баз данных в среде Delphi
Глава 31. Реляционная модель данных
Ключевые термины реляционной базы данных
Этапы проектирования базы данных
Нормализация данных66 Первая нормальная форма - 1NF Вторая нормальная форма - 2NF Третья нормальная форма -3NF Четвертая нормальная форма - 4NF Пятая нормальная форма - 5NF
Модель данных "сущность-связь"
Правила выбора первичного ключа
Индексирование таблиц Виды индексов
Представление (вид)
Хранимая процедура
Триггер
Транзакции и управление их выполнением Изоляция транзакций
Резюме
Глава 32. Структурированный язык запросов - SQL
Назначение и состав языка SQL
Основные типы данных SQL-92 Текстовые данные - Character и National Character Двоичная последовательность - Bit String Точные числа - Exact Numeric Округленные числа - Approximate Numeric Дата и время - DateTime Интервал - Interval
Язык определения данных - DDL Создание базы данных - CREATE DATABASE Уничтожение базы данных - DROP DATABASE Создание схемы - CREATE SCHEMA Удаление схемы - DROP SCHEMA Создание таблицы - CREATE TABLE Удаление таблицы - DROP TABLE Изменение структуры таблицы - ALTER TABLE Определение представления - CREATE VIEW Удаление представления - DROP VIEW Создание индекса - CREATE INDEX Удаление индекса - DROP INDEX Создание процедуры - CREATE PROCEDURE Удаление процедуры - DROP PROCEDURE Создание триггера - CREATE TRIGGER Удаление триггера - DROP TRIGGER
Язык запросов - DQL Выборка значений из таблиц - SELECT
Язык манипулирования данными - DML Вставка новой записи - INSERT Редактирование данных - UPDATE Удаление записей - DELETE
Язык управления доступа к данным - DCL Предоставление прав пользователю - GRANT Отмена прав пользователя - REVOKE
Язык обработки транзакций - TPL Сохранение результатов транзакции - COMMIT Откат транзакции - ROLLBACK
Язык управления курсором - CCL Объявление курсора - DECLARE CURSOR Открытие курсора - OPEN Чтение данных из курсора - FETCH Закрытие курсора - CLOSE
Резюме
Глава 33. Универсальный набор данных - классTDataSet
Открытие и закрытие набора данных
Обновление набора данных
Перемещение по набору данных
Создание закладок и переход к закладке
Состояние набора данных
Редактирование записей в наборе
Организация доступа к отдельному полю Вычисляемые поля Составные поля
Фильтрация набора данных
Организация поиска данных
Обработка событий
Кэширование данных
Взаимодействие с элементами управления данными
Поддержка таблиц символов OEM и ANSI
Резюме
Глава 34. Работа с полями набора данных
Поле таблицы - класс TField Классификация полей по функциональному назначению Классификация полей по типу хранимых данных Обращение к полю Доступ к данным поля Размер поля Значение по умолчанию Ограничения на ввод данных Маска ввода Индексные поля Отображение данных Обработка событий Вычисляемые поля Поля синхронного просмотра Составные поля - TObjectField
Числовые поля - класс TNumericField Поля целых чисел - TLargeintField, TIntegerField, TSmallintField, TWordField и TAutoIncField Поля вещественных чисел - TFloatField и TCurrencyField Двоично-десятичные поля - TBCDField и TFMTBCDField
Текстовые поля - TStringField Поле глобального идентификатора - класс TGuidField
Логическое поле - TBooleanField
Бинарные поля - TBinaryField, TBytesField иTVarBytesField
Дата и время - поля TDateTimeField, TDateField иTTimeField
Дата и время - поле TSQLTimeStampField
Поля больших двоичных объектов - TBlobField,TGraphicField и TMemoField
Резюме
Глава 35. Применение механизма BDE для доступа к данным
Введение в Borland Database Engine Сущности BDE Объекты BDE
Компоненты доступа к данным BDE
Набор данных BDE - класс TBDEDataSet Особенности редактирования данных Управление бизнес-правилами набора Кэширование обновлений Кэширование BLOB-полей События класса TBDEDataSet Информирование о текущем индексе
Соединение с объектом данных - класс TDBDataSet
Таблица - TTable Соединение с файлом таблицы Работа с индексами Поиск записи Создание новой таблицы Переименование таблицы Очистка, удаление таблицы Блокировка таблицы Импорт данных из другой таблицы
Импорт данных - TBatchMove
Запрос - TQuery Подготовка SQL-команд к выполнению Выполнение SQL-запроса Параметры запроса Получение данных, доступных для редактирования
Хранимая процедура - TStoredProc Соединение с хранимой процедурой Выполнение хранимой процедуры
Модифицируемый запрос - компонент TUpdateSQL Пример работы с TUpdateSQL
Резюме
Глава 36. Элементы управления для работы сданными
Источник данных - компонент TDataSource
Общие черты компонентов отображения данных
Сетка базы данных - компонент TDBGrid Одновременный выбор нескольких строк08 Колонки сетки Обработка событий
Статический текст БД - компонент TDBText
Строка ввода БД - компонент TDBEdit
Многострочный текстовый редактор БД - TDBMemo
Редактор расширенного формата БД - TDBRichEdit
Изображение БД - компонент TDBImage
Список БД - компонент TDBListBox
Комбинированный список БД - TDBComboBox
Флажок БД - компонент TDBCheckBox
Группа переключателей БД - компонент TDBRadioGroup
Компонент TDBCtrlGrid
Синхронный просмотр данных Класс TDBLookupControl Список синхронного просмотра - TDBLookupListBox Комбинированный список синхронного просмотра - TDBLookupComboBox
Навигатор - компонент TDBNavigator
Резюме
Глава 37. Элементы управления для работы с данными II
Компоненты-списки
Графический список - компонент TListView
Сетка - компонент TStringGrid
Иерархические данные Многотабличное представление иерархических данных Самообъединение таблицы
Пример проекта иерархической БД
Резюме
Глава 38. Место BDE в клиент-серверных приложениях
Сессия - класс TSession Управление драйверами BDE Управление псевдонимами BDE Получение конфигурационных данных BDE Получение информации о базе данных Работа с паролями таблиц Paradox
Список сессий - TSessionList
База данных - класс TDatabase Связь TDatabase с сессией Соединение с SQL-сервером Регистрация пользователя Управление транзакциями
Резюме
Глава 39. Технология объектов данных ADO
Связь между объектной моделью Microsoft ADO и библиотекой VCL Интерфейс соединения - _Connection Интерфейс команды - _Command Интерфейс множества записей - _Recordset
Строка соединения ADO
Соединение с источником данных ADO - компонент TADOConnection Установка соединения Разрыв соединения Информирование о соединении Отправка команд Управление транзакциями Библиотека курсоров
Набор данных ADO - класс TCustomADODataSet, компонент TADODataSet Доступ к набору данных Выбор библиотеки курсора Редактирование данных Перемещение по множеству строк RecordSet События TCustomADODataSet Обновление множества записей Работа с индексами Особенности изоляции транзакций в наборе данных Фильтрация множества записей Кэширование записей Организация пакетного обновления данных в ADO Отправка команд Портфельный режим обработки данных
Командный объект ADO - TADOCommand
Таблица, запрос и хранимая процедура - компоненты TADOTable, TADOQuery и TADOStoredProc
Сервисные методы модуля ADODB
Резюме
Глава 40. Компоненты InterBase
Доступ к базе данных InterBase - компонентTIBDatabase Выбор диалекта SQL Создание и уничтожение базы данных Соединение с базой данных Разрыв соединения Информирование о составе БД Управление транзакциями Контроль за событиями Совместная работа с SQL-монитором
Элементарный запрос - компонент TIBSQL Подготовка к работе Обслуживание полученного набора данных
Экспорт и импорт данных
Характеристики наборов данных InterBase - компонент TIBDataSet Подготовка к работе Обработка событий Генератор значений Редактирование данных Перемещение по записям Фильтрация данных
Запрос - компонент TIBQuery
Хранимая процедура - компонент TIBStoredProc
Таблица - компонент TIBTable
Транзакция - компонент TIBTransaction Управление транзакцией Тайм-аут транзакции Параметры транзакции
Модифицируемый запрос InterBase - компонент TIBUpdateSQL
Информация об объектах БД - компонент TIBExtract
События InterBase - компонент TIBEvents
Информация о БД - компонент TIBDatabaseInfo
Резюме
Заключение Литература Алфавитный указатель