Delphi для профессионалов
краска для бровей refectocil на www.brow.kz

Delphi для профессионалов

Несколько лет назад книгу по Delphi 2 или 3 надо было начинать с азов объектно-ориентированного программирования (ООП). Многие только переходили к Delphi из DOS, многие использовали Borland Pascal for Windows и работали с Windows API напрямую. Объекты еще были в диковинку, и полное разъяснение новых принципов было просто обязательно.
Но и сейчас писать об этом вполне актуально. Конечно, выросло поколение программистов, которые "с молоком матери" впитали новые понятия. Но от понимания объектов до их грамотного использования — дистанция огромного размера. Для создания более или менее сложных приложений нужны навыки объектно-ориентированного дизайна, а для приложений в свою очередь — четкое знание возможностей вашей среды программирования. Поэтому в данной главе мы постараемся акцентировать внимание читателя на применение ООП в среде Delphi 7.
По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.

ЧАСТЬ I. ОБЪЕКТНАЯ КОНЦЕПЦИЯ DELPHI 7
Глава 1 Объектно-ориентированное программирование
Несколько лет назад книгу по Delphi 2 или 3 надо было начинать с азов объектно-ориентированного программирования (ООП). Многие только переходили к Delphi из DOS, многие использовали Borland Pascal for Windows и работали с Windows API напрямую. Объекты еще были в диковинку, и полное разъяснение новых принципов было просто обязательно. Но и сейчас писать об этом вполне актуально. Конечно, выросло поколение программистов, которые "с молоком матери" впитали новые понятия. Но от понимания объектов до их грамотного использования — дистанция огромного размера. Для создания более или менее сложных приложений нужны навыки объектно-ориентированного дизайна, а для приложений в свою очередь — четкое знание возможностей вашей среды программирования. Поэтому в данной главе мы постараемся акцентировать внимание читателя на применение ООП в среде Delphi 7.

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

Глава 2. Библиотека визуальных компонентов VCL и ее базовые классы
Все классы библиотеки визуальных компонентов произошли от группы базовых классов, которые лежат в основе иерархии VCL. Самый общий предок компонентов — это класс TObject, инкапсулирующий простейший объект. Как известно (см. гл. 1), каждый объект наследует свойства и методы родительского класса. К объекту можно добавить новые свойства и методы, но нельзя удалить унаследованные. Объект-наследник в свою очередь может стать родительским для нового класса, который унаследует возможности всех своих предков.

Библиотека визуальных компонентов VCL и ее базовые классы
Иерархия базовых классов
Класс TObject
Класс TPersistent
Класс TCompomnt
Базовые классы элементов управления
Класс TControl
Группа свойств Visual. Местоположение и размер элемента управления
Выравнивание элемента управления
Внешний вид элемента управления
Связь с родительским элементом управления
Класс TWinControl
Класс TCustomControl
Класс TGraphicControl
Резюме

Глава 3. Обработка исключительных ситуаций
Любому, кто писал более или менее сложные программы, интуитивно ясно, что такое обработка исключительных ситуаций (ИС). Всякое взаимодействие с операционной системой на предмет получения ресурсов — места на диске, в памяти, открытие файла — может завершиться неудачно. Любое вычисление может закончиться делением на ноль или переполнением. Дополнительный фактор возникновения исключительных ситуаций содержится в данных, к которым могут обращаться программы. Особенно это актуально в приложениях баз данных.

Обработка исключительных ситуаций
Исключительная ситуация как класс
Защитные конструкции языка Object Pascal
Блок try..except
Блок try..finally
Использование исключительных ситуаций
Протоколирование исключительных ситуаций
Коды ошибок в исключительных ситуациях
Исключительная ситуация EAbort
Функция Assert
Резюме

Глава 4. Кроссплатформенное программирование для Linux
Времена безраздельного господства операционных систем Windows для домашних компьютеров и корпоративных рабочих станций подходят к концу. Все большее число рядовых компьютеров работает под управлением других операционных систем. Среди них по праву выделяется операционная система Linux, сочетающая в себе открытость и хорошие возможности настройки.

Кроссплатформенное программирование для Linux
Проект CLX
Объектная концепция кроссплатформенного программирования
Библиотека компонентов CLX
Сходства и различия визуальных компонентов CLX и VCL
Особенности программирования для Linux
Приложения баз данных для Linux
Internet-приложения для Linux
Резюме

ЧАСТЬ II. ИНТЕРФЕЙС И ЛОГИКА ПРИЛОЖЕНИЯ
Глава 5. Элементы управления Win32
Элементы управления составляют суть пользовательского интерфейса Windows. Всеми программами нужно управлять более или менее единообразно, поэтому в составе ОС имеется набор типовых кнопок, редактирующих элементов, списков выбора и т. п., которыми вы можете "украсить" свои разработки. Перечень этот постоянно пополняется. Во-первых, не дремлет фирма Microsoft. С новыми версиями ее продуктов (главным образом с MS Internet Explorer) поставляются новые элементы управления; содержатся они в библиотеке ComCtl32.dll. Во-вторых, на ниве их создания подвизаются многочисленные сторонние фирмы, оформляющие свои элементы управления в виде элементов ActiveX (файлов OCX). И. в-третьих, достаточное количество элементов написано прямо в Delphi — как в фирме Borland, так и независимыми разработчиками.

Элементы управления Win32
Что такое библиотека ComCtl32
Многостраничный блокнот — компоненты TTabControl и TPageControl
Компонент TToolBar
Компонент TImageList
Компоненты TTreeView и TListView
Календарь
Компонент TMonthCalendar
Компонент TDateTimePicker
Панель состояния TStatusBar
Расширенный комбинированный список TComboBoxEx
Создание нового компонента на базе элементов управления из библиотеки ComCtl32
Резюме

Глава 6. Элементы управления Windows XP
В Delphi 7 впервые появилась возможность настраивать пользовательский интерфейс приложений для использования в Windows XP. Для этого в состав ресурсов приложения должен включаться манифест Windows XP. Это дополнение призвано обеспечить корректное взаимодействие элементов управления приложения с системной библиотекой ComCtl32.dll версии 6, используемой в Windows XP. Собственно все особенности работы приложений под управлением Windows XP вызваны именно появлением новой версии этой библиотеки. Впрочем, об этом подробно рассказывается ниже.

Элементы управления Windows XP
Пользовательский интерфейс Windows XP
Манифест Windows XP
Компонент TXPManifest
Включение манифеста Windows XP в ресурсы приложения
Визуальные стили и темы оформления
Визуальные стили в Delphi
Theme API
Компоненты настройки цветовой палитры
Резюме

Глава 7. Списки и коллекции
Практически любое приложение должно уметь выполнять ряд стандартных операций по обработке каких-либо данных. К ним относятся загрузка данных при открытии приложения, представление данных в удобном виде для использования внутри приложения, сохранение данных при завершении работы. Перечисленные действия необходимы и приложениям баз данных, и играм, и научным программам.

Списки и коллекции
Список строк
Класс TStrings
Класс TStringList
Список указателей
Класс TList
Пример использования списка указателей
Коллекции
Класс TCollection
Класс TCollectionItem
Резюме

Глава 8. Действия (Actions) и связанные с ними компоненты
С давних пор повелось, что стандарты на пользовательский интерфейс Windows-приложений Microsoft задает "явочным порядком". Первая громкая история на эту тему связана с появлением в 1994 г. Excel 2.0 for Windows, когда разработчики из Редмонда впервые применили интерфейс со многими документами (впоследствии широко известный как MDI) и даже не подумали задокументировать и опубликовать его. После справедливого возмущения широких кругов программистской общественности Microsoft исправился и теперь новые возможности интерфейса публикуются если не до выхода продукта, то, по крайней мере, ненамного позже. Вспомним, с Internet Explorer появилась панель CoolBar и кнопки, картинки, которые подсвечивались при прохождении над ними курсора мыши. Большинство же новинок связано с флагманским продуктом Microsoft — Office.

Действия (Actions) и связанные с ними компоненты
Действия. Компонент TActionList
События, связанные с действиями
Свойства, распространяемые на клиентов действия
Прочие свойства
Стандартные действия
Категория Edit
Категория Search
Категория Help
Категория File
Категория Dialog
Категория Window
Категория Tab
Категория List
Категория Internet
Категория Format
Категория Dataset
Категория Tools
Компонент TActionManager
Изменение и настройка внешнего вида панелей
Ручное редактирование коллекций панелей и действий
Резюме

Глава 9. Файлы и устройства ввода/вывода
Большинство приложений создаются для того, чтобы обрабатывать данные — это прописная истина. С развитием программных технологий мы имеем возможность получать и посылать все более крупные и сложные массивы данных; однако до сих пор 90% из них хранятся в файлах. Для использования файлов в приложении разработчику приходится решать множество задач. Главные из них — поиск необходимого файла и выполнение с ним операций ввода/вывода.

Файлы и устройства ввода/вывода
Использование файловых переменных. Типы файлов
Операции ввода/вывода
Ввод/вывод с использованием функций Windows API
Отложенный (асинхронный) ввод/вывод
Контроль ошибок ввода/вывода
Атрибуты файла. Поиск файла
Потоки
Базовые классы TStream и THandleStream
Класс TFileStream
Класс TMemoryStream
Класс TStringStream
Оповещение об изменениях в файловой системе
Использование отображаемых файлов
Резюме

Глава 10. Использование графики
"Одно изображение стоит тысячи слов", — говорил древнекитайский император Сун; его слова верны и в наши времена. 80% информации мозг человека получает по зрительному каналу, и не удивительно, что программисты стараются придать внешнему виду своих программ максимум привлекательности. Поэтому в Delphi с самого начала появились развитые средства для работы с графическими возможностями Windows. Этому набору объектов и посвящена данная глава.

Использование графики
Графические инструменты Delphi
Класс TFont
Класс ТРеn
Класс TBrush
Класс TCanvas
Класс TGraphic
Класс TPicture
Класс TMetafile
Класс TIcon
Класс TBitmap
Графический формат JPEG. Класс TJPEGImage
Компонент TImage
Использование диалогов для зафузки и сохранения графических файлов
Класс TClipboard
Класс TScreen
Вывод графики с использованием отображаемых файлов
Класс TAnimate
Резюме

ЧАСТЬ III. ПРИЛОЖЕНИЯ БАЗ ДАННЫХ
Глава 11. Архитектура приложений баз данных
Приложение баз данных, как следует уже из его названия, предназначено для взаимодействия с некоторым источником данных — базой данных (БД). Взаимодействие подразумевает получение данных, их представление в определенном формате для просмотра пользователем, редактирование в соответствии с реализованными в программе бизнес- алгоритмами и возврат обработанных данных обратно в базу данных. В качестве источника данных могут выступать как собственно базы данных, так и обычные файлы — текстовые, электронные таблицы и т. д. Но здесь мы будем рассматривать приложения, работающие с базами данных.

Архитектура приложений баз данных
Как работает приложение баз данных Модуль данных
Подключение набора данных
Настройка компонента TDataSource
Отображение данных
Резюме

Глава 12. Набор данных
Любое приложение баз данных должно уметь выполнять как минимум две операции. Во-первых, иметь информацию о местонахождении базы данных, подключаться к ней и считывать имеющуюся в таблицах БД информацию. Эта функция в значительной степени зависит от реализации конкретной технологии доступа к данным. Во-вторых, обеспечивать представление и редактирование полученных данных. Множество записей одной или нескольких таблиц, переданные в приложение в результате активизации компонента доступа к данным, будем называть набором данных. Понятно, что в объектно-ориентированной среде для представления какой-либо группы записей приложение должно использовать возможности некоторого класса. Этот класс должен инкапсулировать набор данных и обладать методами для управления записями и полями.

Набор данных
Абстрактный набор данных
Стандартные компоненты
Компонент таблицы
Компонент запроса
Компонент хранимой процедуры
Индексы в наборе данных
Механизм подключения индексов
Список описаний индексов
Описание индекса
Использование описаний индексов
Параметры запросов и хранимых процедур
Класс TParams
Класс TParam
Состояния набора данных
Резюме

Глава 13. Поля и типы данных
Каждая таблица БД и, следовательно, каждый набор данных приложения имеет собственную структуру, которая определяется совокупностью полей. Каждое поле набора данных представляет собой объект, содержащий описание типа данных, которому должно соответствовать значение, находящееся в записи на определенном месте. Иначе, полем можно назвать совокупность ячеек с данными конкретного типа, расположенных в одном и том же месте каждой записи набора данных, или попросту — это столбец в таблице.

Поля и типы данных
Объекты полей
Статические и динамические поля
Класс TField
Виды полей
Поля синхронного просмотра
Вычисляемые поля
Внутренние вычисляемые поля
Агрегатные поля
Объектные поля
Типы данных
Ограничения
Резюме

Глава 14. Механизмы управления данными
Наряду с описываемыми в предыдущих главах свойствами и методами, стандартный набор данных Delphi инкапсулирует ряд дополнительных механизмов, облегчающих управление записями и полями. К ним относятся такие полезные функции, как быстрое перемещение по записям, поиск нужной записи по значениям полей, дополнительная фильтрация записей набора данных без использования возможностей СУБД и т. д. Большинство этих механизмов применяют в своей работе индексы таблиц БД.

Механизмы управления данными
Связанные таблицы
Отношение "один-ко-многим"
Отношение "многие-ко-многим"
Поиск данных
Поиск по индексам
Поиск в диапазоне
Поиск по произвольным полям
Фильтры
Быстрый переход к помеченным записям
Диапазоны
Резюме

Глава 15. Компоненты отображения данных
До этого момента мы рассмотрели аспекты создания приложений баз данных, касающиеся организации доступа к данным и создания в приложениях наборов данных. Теперь более подробно остановимся на вопросах отображения данных в приложениях (интерфейс приложений). Отображение данных обеспечивает достаточно представительный набор компонентов VCL Delphi. Многие из них унаследованы от компонентов, инкапсулирующих стандартные элементы управления. Для связи с набором данных эти компоненты используют компонент TDataSource.

Компоненты отображения данных
Классификация компонентов отображения данных
Табличное представление данных
Компонент TDBGrid
Компонент TDBCtrlGrid
Навигация по набору данных
Представление отдельных полей
Компонент TDBText
Компонент TDBEdit
Компонент TDBCheckBox
Компонент TDBRadioGroup
Компонент TDBListBox
Компонент TDBComboBox
Компонент TDBMemo
Компонент TDBImage
Компонент TDBRichEdit
Синхронный просмотр данных
Механизм синхронного просмотра
Компонент TDBLookupListBox
Компонент TDBLookupComboBox
Графическое представление данных
Резюме

ЧАСТЬ IV. ТЕХНОЛОГИИ ДОСТУПА К ДАННЫМ
Глава 16. Процессор баз данных Borland Database Engine
Для работы с источниками данных при посредстве BDE в Delphi имеется специальный набор компонентов, расположенных на странице BDE Палитры компонентов. Эти компоненты для работы с базами данных используют возможности BDE, обращаясь к его функциям и процедурам. Механизм доступа к BDE инкапсулирован в базовом классе TBDEDataSet. (Подробно базовые классы компонентов доступа к данным рассмотрены далее в этой части.) Поэтому в процессе программирования у вас не будет необходимости использовать функции BDE напрямую. Почти все, что можно сделать путем прямого обращения, можно сделать и через компоненты — это проще и надежнее.

Процессор баз данных Borland Database Engine
Архитектура и функции BDE
Псевдонимы баз данных и настройка BDE
Интерфейс прикладного программирования BDE
Соединение с источником данных
Компоненты доступа к данным
Класс TBDEDataSet
Класс TDBDalaSet
Компонент ТТаblе
Компонент TQuery
Компонент TStoredProc
Резюме

Глава 17. Технология dbExpress
Одной из проблем различных технологий доступа к данным, используемым в приложениях Delphi, является трудность распространения готовых приложений. Для BDE требуется отдельная установка, которая занимает порядка 15 Мбайт дискового пространства, а также специальная настройка псевдонимов (см. гл. 16). ADO предустановлена в операционной системе, но нуждается в настраиваемых провайдерах данных (см. гл. 19). При необходимости обновить версию ADO, дистрибутив вашего приложения "потяжелеет" более чем на 2 Мбайт.

Технология dbExpress
Драйверы доступа к данным
Соединение с сервером баз данных
Управление наборами данных
Транзакции
Использование компонентов наборов данных
Класс TCustomSQLDataSet
Компонент TSQLDataSet
Компонент TSQLTable
Компонент TSQLQuery
Компонент TSQLStoredProc
Компонент TSimpleDataSet
Способы редактирования данных
Интерфейсы dbExpress
Интерфейс ISQLDriver
Интерфейс ISQLConnection
Интерфейс ISQLCommand
Интерфейс ISQL Cursor
Отладка приложений с технологией dbExpress
Распространение приложений с технологией dbExpress
Резюме

Глава 18. Сервер баз данных InterBase и компоненты InterBase Express
На странице InterBase Палитры компонентов содержатся компоненты доступа к данным, адаптированные для работы с сервером InterBase и объединенные названием InterBase Express. Компоненты из набора InterBase Express предназначены для работы с сервером InterBase версии не ниже 5.5. Их преимущество заключается в реализации всех функций за счет прямого обращения к API сервера InterBase. Благодаря этому существенно повысилась скорость работы компонентов.

Сервер баз данных InterBase и компоненты InterBase Express
Механизм доступа к данным InterBase Express
Компонент TIBDatabase
Компонент TIBTransaction
Компоненты доступа к данным
Область дескрипторов XSQLDA
Структура XSQLVAR
Компонент TIBTable
Компонент TIBQuery
Компонент TIBStoredProc
Компонент TIBDataSet
Компонент TIBSQL
Обработка событий
Информация о состоянии базы данных
Компонент TIBDatabaselnfo
Компонент TIBSQLMonitor
Резюме

Глава 19. Использование ADO средствами Delphi
Наряду с традиционными инструментами доступа к данным Borland Database Engine и ODBC в приложениях Delphi можно применять технологию Microsoft ActiveX Data Objects (ADO), которая основана на возможностях СОМ, а именно интерфейсов OLE DB. Технология ADO завоевала популярность у разработчиков, благодаря универсальности — базовый' набор интерфейсов OLE DB имеется в каждой современной операционной системе Microsoft. Поэтому для обеспечения доступа приложения к данным достаточно лишь правильно указать провайдер соединения ADO и затем переносить программу на любой компьютер, где имеется требуемая база данных и, конечно, установленная ADO.

Использование ADO средствами Delphi
Основы ADO
Перечислители
Объекты соединения с источниками данных
Сессия
Транзакции
Наборы рядов
Команды
Провайдеры ADO
Реализация ADO в Delphi
Компоненты ADO
Механизм соединения с хранилищем данных ADO
Компонент TADOConnection
Настройка соединения
Управление соединением
Доступ к связанным наборам данных и командам ADO
Объект ошибок ADO
Транзакции
Наборы данных ADO
Класс TCustomADODataSel
Набор данных
Курсор набора данных
Локальный буфер
Состояние записи
Фильтрация
Поиск
Сортировка
Команда ADO
Групповые операции
Параметры
Класс TParameters
Класс ТParameter
Компонент TADODataSet
Компонент TADOTable
Компонент TADOQuery
Компонент TADOStoredProc
Команды ADO
Объект ошибок ADO
Пример приложения ADO
Соединение с источником данных
Групповые операции
Фильтрация
Сортировка
Резюме

ЧАСТЬ V. РАСПРЕДЕЛЕННЫЕ ПРИЛОЖЕНИЯ БАЗ ДАННЫХ
Глава 20. Технология DataSnap. Механизмы удаленного доступа
В главах части IV мы рассматривали вопросы создания обычных приложений БД, работающих с базами данных на локальных компьютерах или в пределах локальной сети. Однако, как быть, если необходимо создать приложение, которое может с одинаковым успехом работать как в локальной сети, так и на удаленном компьютере. Очевидно, что в этом случае модель доступа к данным должна быть расширена, т. к. наличие большого числа удаленных клиентов делает традиционные схемы создания приложений БД малоэффективными. В этой главе мы рассмотрим модель распределенного приложения БД, которая называется многозвенной (multitiered), и, в частности, ее наиболее простой вариант — трехзвенное распределенное приложение.

Технология DataSnap. Механизмы удаленного доступа
Структура многозвенного приложения в Delphi
Трехзвенное приложение в Delphi
Сервер приложений
Клиентское приложение
Механизм удаленного доступа к данным DataSnap
Компонент TDCOMConnection
Компонент TSocketConnection
Компонент TWebConnection
Провайдеры данных
Вспомогательные компоненты — брокеры соединений
Компонент TSimpleObjectBroker
Компонент TLocalConnection
Компонент TSharedConnection
Компонент TConnectionBroker
Резюме

Глава 21. Сервер приложения
Многозвенные распределенные приложения обеспечивают эффективный доступ удаленных клиентов к базе данных, так как в них для управления доступом к данным применяется специализированное ПО промежуточного слоя. В наиболее распространенной схеме — трехзвенном приложении — это сервер приложения

Сервер приложения
Структура сервера приложения
Интерфейс IAppServer
Интерфейс IProviderSupport
Удаленные модули данных
Удаленный модуль данных для сервера Автоматизации
Дочерние удаленные модули данных
Регистрация сервера приложения
Пример простого сервера приложения
Главный удаленный модуль данных
Дочерний удаленный модуль данных
Регистрация сервера приложения
Резюме

Глава 22. Клиент многозвенного распределенного приложения
Клиентское ПО в распределенном многозвенном приложении имеет особенности архитектуры, продиктованные его ролью — ведь большая часть бизнес-логики и функций обработки данных сосредоточены в сервере приложений (см. гл. 21). Такая схема призвана обеспечить более высокую эффективность обработки запросов многочисленных удаленных клиентов, а также упрощает обслуживание клиентского ПО. Клиенты, выполняющие лишь необходимый минимум операций, называются "тонкими".

Клиент многозвенного распределенного приложения
Структура клиентского приложения
Клиентские наборы данных
Компонент TClientDataSet
Получение данных от компонента-провайдера
Кэширование и редактирование данных
Управление запросом на сервере
Использование индексов
Сохранение набора данных в файлах
Работа с данными типа BLOB
Представление данных в формате XML
Агрегаты
Объекты-агрегаты
Агрегатные поля
Группировка и использование индексов
Вложенные наборы данных
Дополнительные свойства полей клиентского набора данных
Обработка ошибок
Пример "тонкого" клиента
Соединение клиента с сервером приложения
Наборы данных клиентского приложения
Резюме

ЧАСТЬ VI. ГЕНЕРАТОР ОТЧЕТОВ RAVE REPORTS 5.0
Глава 23. Компоненты Rave Reports и отчеты в приложении Delphi
На первый взгляд кажется, что в сфере создания и печати отчетов в Delphi 7 произошла небольшая революция. Просматривая первый раз Палитру компонентов, вы не найдете в ней хорошо знакомой по прошлым версиям Delphi страницы QReport. Вместо старого генератора отчетов в состав Delphi 7 включен продукт Rave Reports 5.0 от фирмы Nevrona. "Ну и почему же это событие не дотягивает до революции в отчетах?" — спросит читатель. Авторы могут обосновать свою точку зрения.

Компоненты Rave Reports и отчеты в приложении Delphi
Генератор отчетов Rave Reports 5.0
Компоненты Rave Reports и их назначение
Отчет в приложении Delphi
Компонент отчета TRvProject
Компонент управления отчетом TRvSystem
Резюме

Глава 24. Визуальная среда создания отчетов
Визуальная среда создания отчетов входит в состав генератора отчетов Rave Reports 5.0. В отличие от генератора отчетов Quick Report, который поставлялся с Delphi 6 и более ранними версиями, визуальная среда в Rave Reports значительно облегчает самый трудоемкий этап в процессе создания отчета и его включения в состав приложения — постраничную разработку шаблона отчета. Под шаблоном отчета мы подразумеваем совокупность страниц отчета с расположенными на них графическими и текстовыми элементами оформления, а также свойствами и правилами создания отчета, сохраненными в файле с расширением rav.

Визуальная среда создания отчетов
Инструментарий визуальной среды создания отчетов
Проект отчета
Библиотека отчетов
Каталог глобальных страниц
Словарь просмотров данных
Стандартные элементы оформления и их свойства
Элементы для представления текста и изображений
Графические элементы управления
Штрихкоды
Обработка событий
Внешние источники данных в отчете
Соединение с источником данных и просмотры
Безопасность доступа к данным
Отображение данных в отчетах
Структурные элементы отчета
Элементы отображения данных
Резюме

Глава 25. Разработка, просмотр и печать отчетов
Мы уже обсуждали в предыдущих главах визуальную среду создания отчетов Rave Reports и набор компонентов Delphi на странице Rave Палитры компонентов, предназначенный для интегрирования отчета в приложение Delphi. В этой главе мы обратимся к практике разработки и использования отчетов Rave Reports в приложениях Delphi. Рассматриваемые в данной главе примеры не отличаются изощренностью оформления и сложностью, но позволяют поэтапно проследить всю методику создания отчетов и использования их в приложениях и обладают основными атрибутами стандартных отчетов. В них имеются заголовки, нумерация страниц, выводится текстовая и графическая информация.

Разработка, просмотр и печать отчетов
Этапы создания отчета и включение его в приложение
Простой отчет в визуальной среде Rave Reports
Нумерация страниц отчета
Использование элемента FontMaster
Добавление страниц к отчету
Отчет в приложении
Просмотр и печать отчета
Сохранение отчета во внешнем файле
Компонент TRvNDRWriter
Преобразование форматов данных
Резюме

Глава 26. Отчеты для приложений баз данных
Генератор отчетов Rave Reports позволяет создавать отчеты, отображающие данные из различных источников данных. Для этого используются средства визуальной среды и компоненты со страницы Rave Палитры компонентов Delphi. Приложение может воспользоваться соединением, предоставленным генератором отчетов, созданным и настроенным в проекте отчета, а также может использовать компоненты Rave Reports, которые обеспечивают передачу данных в отчет.

Отчеты для приложений баз данных
Соединения с источниками данных в Rave Reports
Соединения с источниками данных в визуальной среде Rave Reports
Соединение через драйвер Rave Reports
Соединение через компонент приложения Delphi
Соединения с источниками данных в приложении
Компонент TRvDataSetConnection
Компоненты, использующие BDE
Компонент TRvCustomConnection
Аутентификация пользователя в отчете
Типы отчетов
Простой табличный отчет
Отчет "один-ко-многим"
Группирующий отчет
Использование вычисляемых значений
Вычисляемые значения по одному источнику.
Вычисляемые значения по нескольким источникам
Управляющие вычислительные элементы
Резюме

ЧАСТЬ VII. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
Глава 27. Стандартные технологии программирования
В этой главе обсуждаются вопросы использования стандартных для приложений Windows технологий программирования. С их помощью ваше приложение обретет законченный вид и будет соответствовать необходимым канонам и правилам пользовательского интерфейса.

Стандартные технологии программирования
Интерфейс переноса Drag-and-Drop
Интерфейс присоединения Drag-and-Dock
Усовершенствованное масштабирование
Управление фокусом
Управление мышью
Ярлыки
Резюме

Глава 28. Динамические библиотеки
Динамические библиотеки (DLL, Dynamic Link Library) играют важную роль в функционировании ОС Windows и прикладных программ. Они представляют собой файлы с откомпилированным исполняемым кодом, который используется приложениями и другими DLL. Реализация многих функций ОС вынесена в динамические библиотеки, которые используются по мере необходимости, обеспечивая тем самым экономию адресного пространства. DLL загружается в память только тогда, когда к ней обращается какой-либо процесс. По существу динамические библиотеки отличаются от исполняемых файлов только одним, они не могут быть запущены самостоятельно. Для того чтобы динамическая библиотека начала работать, необходимо, чтобы ее вызвала уже запущенная программа или работающая DLL.

Динамические библиотеки
Проект DLL
Экспорт из DLL
Соглашения о вызовах
Директива register
Директива pascal
Директива stdcall
Директива cdecl
Директива safecall
Инициализация и завершение работы DLL
Вызов DLL
Неявный вызов
Явный вызов
Ресурсы в DLL
Использование модуля ShareMem
Резюме

Глава 29. Потоки и процессы
Работая с Delphi, нужно иметь в виду: этот замечательный продукт не только упрощает разработку сложных приложений, он использует при этом все возможности операционной системы. Одна из возможностей, которую поддерживает Delphi, — это так называемые потоки (threads) или нити. Потоки позволяют в рамках одной программы решать несколько задач одновременно. С недавних пор операционные системы для персональных компьютеров сделали это возможным.

Потоки и процессы
Обзор потоков
Потоки и процессы
Фоновые процедуры, или способ обойтись без потоков
Приоритеты потоков
Класс TThread
Пример создания многопоточного приложения в Delphi
Проблемы при синхронизации потоков
Тупики
Гонки
Средства синхронизации потоков
Событие
Взаимные исключения
Семафор
Критическая секция
Процесс. Порождение дочернего процесса.
Поток
Консольный ввод
Оповещение об изменении в файловой системе
Локальные данные потока
Как избежать одновременного запуска двух копий одного приложения
Резюме

Глава 30. Многомерное представление данных
Помимо стандартных компонентов отображения данных в VCL Delphi имеются дополнительные компоненты, которые позволяют представлять данные в виде кросстаба. При этом заставить работать кросстаб с двумя и более полями почти так же просто, как и обычный компонент TDBGrid. Эти компоненты расположены на странице Decision Cube Палитры компонентов. Кросстабом называется такое табличное представление данных, которое имеет переменную структуру по горизонтали и вертикали. Причем обозначения столбцов по вертикали и строк по горизонтали соответствуют значениям полей набора данных. В ячейках кросстаба содержатся не данные, а суммарные значения для двух полей, которые пересекаются в этой ячейке.

Многомерное представление данных
Понятие кросстаба
Взаимосвязь компонентов многомерного представления данных
Подготовка набора данных
Компонент TDecisionQuery
Компонент TDecisionCube
Компонент TDecisionSource
Отображение данных
Компонент TDecisionGrid
Компонент TDecisionGraph
Управление данными
Компонент TDecisionPivot
Пример многомерного представления данных
Резюме

Глава 31. Использование возможностей Shell API
Разобравшись с механизмами СОМ, вам наверняка захочется "испытать радость общения" с объектами, имеющимися в составе ОС. Microsoft уверенно идет к тому, чтобы все составные части своих операционных систем, как и прочих продуктов, превратить в СОМ-объекты. В этом направлении сделаны большие шаги, и оболочка Windows, и ее файловая система предоставляют интерфейсы СОМ. В Windows 2000, судя по заверениям представителей фирмы, все новые возможности представлены и доступны в виде интерфейсов. В качестве примера работы с интерфейсом ShellLink вместе с Delphi поставляется приложение Virtual ListView. Но, во-первых, в нем безо всякого документирования вводятся достаточно сложные структуры и интерфейсы; во-вторых, оно содержит только минимум функций для работы с объектами. В этой главе мы постараемся объяснить применяемые там приемы.

Использование возможностей Shell API
Понятие пространства имен
Размещение значка приложения на System Tray
Интерфейс IShellLink
Интерфейс IShellFolder
Добавление пунктов в системное контекстное меню
Резюме
Статьи

Советы по Delphi

Я обнаружил, что открытый Data Desktop, даже без открытых объектов, может создавать "помехи". Также мудрит открытая сессия Delphi, если вы запускаете собранное приложение вне IDE. Я допускаю, что если вы закрываете все объекты под DD, конфигурация BDE быстро себя не очистит. Наверное мне следовало бы запустить мое приложение пару недель спустя, но я реально предполагаю, что множество сеансов Paradox блокируют бедный BDE.

Очень медленный доступ к таблице при первом обращении
Использование таблиц Access
VBX в приложениях DELPHI: как распространять
Читаем Adobe Acrobat PDF файлы из нашего приложения
Ханойская башня
Псевдонимы
Какие есть рекомендации по использованию Apollo SDE
Arrayindelphi
Пересборка индексов с помощью TBatchMove
Смена иконки BitBtn во время работы приложения
Нажатие кнопки
Вызов Delphi DLL из MS Visual C++
Хитрость OnCalcFields
Эмулятор плавающей точки
Получение идентификатора диска
Открытие и закрытие привода CD-ROM
Массив из CheckBox - использование разделяемого обработчика события
Просмотр буфера обмена
Работа с индексами Clipper'а
Как зарегистрировать OCX?
Программное открытие ComboBox
Директивы компилятора, способные увеличить скорость
Проверка URL
Панель Управления
Число строкой
Работа с портами микропроцессора
Создание db-файла во время работы приложения
Создание события во время выполнения приложения
Вычисление даты Пасхи
Как заставить работать DB2 через протокол IPX
Таблицы dBASE: Структура .DBF-файла
Заполнение TDBComboBox/ListBox
Различные цвета строк в DBCtrlGrid
Перевод в верхний регистр первого вводимого символа
Использование опции MultiSelect в DBGRID
Проблема хранения TDBImage
Копирование текста DBMemo
Пример KeyDown компонента DBNavigator
Событие OnChange компонента DBRadioGroup
DCOM
Получение данных из Program Manager через DDE
Hard mode без перерыва
Задержка выполнения OnChange
Ошибка сохранения текста в Memo
Ошибка в руководстве "Getting Started" на странице 42
Получение констант с определением ошибки функцией LoadStr
Некорректность реализации свойства BorderWidth
Снимок DESKTOP в form.canvas
Центрирование информационного диалога (MessageDlg)
Drag and Drop: как использовать ITEMATPOS для получения элемента DIRLISTBOX
Drag & Drop c Win95 Explorer
Пример TDrawGrid Drawcell
Массив Edit-компонентов
64-Битное кодирование/декодирование
Перехват ошибок DBEngine
DLL и ресурсы
Events
Исключения в Delphi
FileListBox с двумя колонками
Поиск величины при вводе
Как мне проверить готовность диска 'a:'?
Как приложению воспользоваться своими шрифтами? Без помощи пользователя
UUE кодирование
Заголовок TGA-файла
Рисование на GroupBox
Серийный номер тома
Процедура форматирования
THeader как сплиттер
Оглавление файлов помощи (Help Files Contents)
Html
Вывод окна CPU (дизассемблер)
Изображение не масштабируется
Изменение директории установки по умолчанию в InstallShield
Interbase
Interbase 2
Почему мои ISAPI-ориентированные
Контроль джойстика в Delphi
Звуковой сигнал при нажатии
3D-рамка для текстовых компонентов
Изменение шрифта в Listbox
TListView, TTreeView
Перехват клавиши SHIFT во время выбора пункта меню
FFT аглоритм для Delphi
Запись с помощью MediaPlayer
Прокрутка Memo
Общий доступ к памяти, распределенной DLL
Предел сегмента данных в 64K
Сообщения Windows - введение
Перекрытие виртуальных методов
AT-команды модема
Добавление события OnMouseLeave
Delphi и OLE Automation с Excel
MAPI и MS Exchange
Delphi / MS Office 97 / OLE / VB для приложений
Получение данных из Delphi-приложения в документе Word
Обзор сети (типа Network Neighborhood - Сетевое Окружение)
События OnClick/Onchange компонента Notebook
Создание объектных переменных
Конфигурирование ODBC
OLE тестер
Связь с personal Oracle
Оболочка ShellExecute
Копирование таблицы с помощью DBE
Высокоточный таймер
Сканирование версии структуры базы данных
Соглашения о вызовах DLL II
Делегирование события
Как в ATX корпусе программно выключить питание под DOS
Объект DocInput
Мультимедиа-программирование в Delphi
Сокращенное имя каталога
Каталог вашего приложения
Работа оператора CASE со строками
Массив компонентов
Пример использования ActiveControl
Производная TOutline
Динамические PageControl/TabSheet
TPaintBox в буфер обмена
Перемещение мышью панели на форме во время выполнения программы
Форматированные Memo-поля таблиц Paradox
Пример переменного количества параметров
Как избежать использования неактуальных указателей
Как динамически создавать пункты подменю в PopupMenu
Работа с последовательными портами
Power
Управляющие коды принтера
Progressbar
Код определения свойств
Пример защиты типа SHAREWARE
Поиск записи с помощью TQuery
Проблемы со шрифтами у QuickReport
Radiogroup
Текущий номер записи
Пример переменной записи
Как удалить файлы в корзину (Recycle Bin)?
Регистры - доступ и использование вместо WIN.INI
Передача переменных отчета в ReportSmith
Таблицы строк
Чтение текста RichEdit из базы данных
Создание хранителя экрана (Screen Saver)
Scrollbar
Синхронизация двух компонентов Scrollbox
Как создавать ярлыки (shortcuts)?
Shutdown
Низкоуровневые процедуры обработки звука
Как умертвить PC Speaker?
Двойной щелчок на TSpeedButton
Конструирование Splitter
Sql
Как правильно работать с SQLAnywhere через BDE -> ODBC -> SAW?
Обработчик события OwnerDraw в компоненте StatusBar
Реализация собственного потока
Помещение компонентов в StringGrid
Эквивалент Trim$(),Mid$() и др
32-Битное соединение с сервером Sybase
Добавление элементов управления в TTabbedNotebook и TNotebook
Tabcontrol
Создание компонента TTable без формы
Перемещение на страницу Tabset по имени
Деактивация приложения
Больше цветов
Поиск строки текста в наследниках TCustmoEdit
Tdatalink
Dos Copy через TFileStream
Delphi-приложения без форм
Канва от THandle (для метафайлов)
Рассуждения о потоках
Остановка таймера на `полпути`
Проблемы ini-файла
TList с распределением памяти
Tmemorystream
TMetafile - ошибка при работе с памятью
Недокументированный TParser
TrackBar для эстетов
Ускорение работы TreeView
Подсказка по работе TRegIniFile
Дополненный TRegistry, умеет работать с значениями типа REG_MULTI_SZ
Сохранение и чтение из потока данных объекта
TStringList в TIniFile
Пример TWriter/TReader
Огромные числа
Не работает функция Writeln
Что нужно знать о принципе и порядке работы с TUpdateSQL для работы с неживыми запросами
DOSVariable
Статические переменные
Visual Basic "Beep" в Delphi
Как у TWebBrowser (IE4 ActiveX) показать диалог Find
Пример DDE & WordPerfect

32 Урока Borland Delphi

Допускаю, что вы пока еще не слышали этого названия. Хотя, быть может, и слышали. Delphi - это греческий город, где жил дельфийский оракул. И этим именем был назван новый программный продукт с феноменальными характеристиками. Шесть месяцев назад компания Borland представила на суд программистской общественности новый программный продукт, о котором к моменту его выхода ходило множество слухов. Первая версия продукта явилась результатом разработки, которая велась компанией в обстановке строжайшей секретности в течение двух с половиной лет.
Hадо отметить, что к моменту выхода продукта обстановка вокруг компании Borland складывалась не лучшим для нее образом. Поговаривали о возможной перепродаже компании, курс акций компании неудержимо катился вниз. Сейчас, по прошествии полугода, уже можно без всяких сомнений утверждать, что период трудностей позади (даже несмотря на то, что российская пресса нет-нет, да и вынет на свет божий залежалый перевод статьи полугодовой давности). Hеверно, конечно, было бы говорить, что только Delphi явился причиной восстановления компании; кроме Delphi, у Borland появились и другие замечательные продукты, так же, как и Delphi, основывающиеся на новых, появившихся недавно у компании Borland, технологиях. Я имею в виду новые BDE 2.0, BC++ 4.5, Paradox for Windows 5.0, dBase for Windows 5.0, BC++ 2.0 for OS/2.
Тем не менее, именно Delphi стал тем продуктом, на примере которого стало ясно, что у Borland есть еще порох в пороховницах, и что один единственный продукт может настолько удачно сочетать несколько передовых технологий.

Уроки 1-19
Уроки 20-32

*


купить gta 5 | кс го стим | buy quick YouTube views Get the factsсамые дешевые проститутки спб 100 рублей анилингус римминг|viagra