2.2.4 Компоненты вкладки

Data Access

Компоненты этой вкладки осуществляют включение в ваше приложение следующих элементов, обеспечивающих доступ к базам данных:

TDataSource | Действует как интерфейс между TTable, TQuery и TStoredProc и компонентами управления данными типа TDBGrid.
ТТаЫе | Обеспечивает доступ к таблицам базы данных.
TQuery | Обеспечивает передачу команд на языке структурированных запросов SQL серверу локальной или удаленной базы данных.
TStoredProc | Разрешает выполнение хранимых процедур сервера удаленной базы данных.
TDatabase | Эта компонента не участвует в организации доступа к базам данных, хотя предоставляет возможность управления в приложениях клиент/сервер.
TSession | Предоставляет средства глобального управления групповых соединении с несколькими базами данных.
TBatchMove | Разрешает выполнять пакетные операции над группами записей или целыми таблицами.
TUpdateSQL | Предоставляет специальный механизм обновления данных, возвращаемых некоторыми запросами SQL.

2.2.5 Компоненты вкладки Data Controls

Компоненты этой вкладки осуществляют включение в ваше приложение следующих элементов управления визуализацией и редактированием подсоединенной базы данных:

TDBGrid | Отображает и позволяет редактировать записи таблицы или запроса базы данных на сетке.
TDBNavigator | Используется для перемещений по записям таблицы или запроса базы данных и для выполнения операций по их просмотру и редактированию.
TDBText | Отображает статический текст названия текущей записи таблицы или запроса базы данных.
TDBEdit | Создает однострочную область редактируемого ввода в текущую запись таблицы или запроса базы данных.
TDBMemo | Создает многострочную область редактируемого ввода (включая данные в формате BLOB) в текущую запись таблицы или запроса базы данных.
TDBImage | Создает контейнер для представления графического изображения, которое хранится в поле текущей записи в формате BLOB.
TDBListbox | Создает список, выбранный элемент которого становится новым значением поля текущей записи таблицы или запроса базы данных.
TDBComboBox | Создает комбинацию области редактирования и выпадающего списка текстовых строк для изменения значения текущей записи в наборе данных.
TDBCheckBox | Создает элемент управления с двумя состояниями, связанными с конкретным полем записи таблицы или запроса базы данных.
TDBRadioGroup | Создает контейнер для группы логически взаимоисключающих радио-кнопок, связанных с конкретными полями записи таблицы или запроса базы данных.
TDBLookupList | Создает список ссылок для заполнения полей данными из другой таблицы или запроса базы данных.

TDBLookup ComboBox | Создает комбинацию области редактирования и выпадающего списка ссылок для заполнения полей данными из другой таблицы или запроса базы данных.

2.2.6 Компоненты вкладки

Dialogs

Компоненты этой вкладки осуществляют включение в ваше приложение следующих стандартных диалоговых элементов

Windows:

TOpenDialog | Открывает доступ к диалогу открытия файлов.
TSaveDialog | Открывает доступ к диалогу сохранения файлов.
TFontDialog | Открывает доступ к диалогу выбора шрифтов и их атрибутов.
TColorDialog | Открывает доступ к диалогу выбора цветов.
TPrintDialog | Открывает доступ к диалогу печати (выбор принтера, диапазона печатаемых страниц, числа копий и т.п.).
TPrinterSetup Dialog | Открывает доступ к диалогу предварительных установок принтера перед печатью.
TFindDialog | Открывает доступ к диалогу поиска текста.
TReplaceDialog | Открывает доступ к диалогу поиска текста с заменой.

2.2.7 Компоненты вкладки System

Компоненты этой вкладки осуществляют включение в ваше приложение следующих специализированных системных элементов управления:

TTimer | Вызывает возникновение события OnTimer по прошествии заданного временного интервала.
TPaintBox | Предоставляет возможность рисования на форме внутри заданной прямоугольной области.
TFiIeListBox | Перечисляет все файлы в текущем каталоге, доступные программе во время ее работы.
TDirectoryListBox | Отображает древовидную структуру каталогов текущего диска, доступных программе во время ее работы.
TDriveComboBox | Отображает комбинированный редактируемый список дисков, доступных программе во время ее работы.
TfilterComboBox | Представляет комбинированный редактируемый список фильтров для выбора имен файлов с расширениями.
TMediaPlayer | Отображает стандартную панель управления устройствами мультимедиа (звуковая плата, компакт диск, видеокамера, AVI плеер, MIDI секвенсор и др.), которые поддерживаются MCI-драйверами Windows.
TOIeContainer | Организует связь с OLE объектами или непосредственно включает их в ваше приложение.
TddeClientConv | Устанавливает режим динамического обмена данными DDE клиента.
TDDEClientltem | Определяет элемент динамического обмена данными DDE клиента.
TDDEServerConv | Устанавливает режим динамического обмена данными DDE сервера.
TDDEServerItem | Определяет элемент динамического обмена данными DDE сервера.

2.3 Приложения управления базами данных

Если вы не чувствуете себя достаточно уверенно, чтобы сразу перейти к самостоятельному программированию приложении СУБД в среде C++Builder, просмотрите готовые примеры, входящие в комплект поставки системы. Обратите внимание на методику адаптации приложении применительно к специфике ваших задач. 1 ,,

Доступ к базам данных поддерживает его основа - высокопроизводительный механизм BDE (Borland Database Engine), включающий 32-разрядные драйверы для баз данных dBASE, Paradox; Sybase, Oracle, DB2, Microsoft SQL Server, Informix, InterBase и Local Interbase. Кроме того C++Builder имеет быстродействующий механизм ODBC для связи с такими базами данных, как Excel, Access, FoxPro и Btrieve в архитектуре клиент/сервер. Поскольку в наших примерах используется только демонстрационная база данных BCDEMOS, удостоверьтесь предварительно, что ее локальный псевдоним (alias) установлен с помощью утилиты конфигурации BDE. Если вы располагаете другими источниками данных, укажите их.

2.3.1 Пример из существующего проекта

Данный пример демонстрирует работу компонент доступа TDBGrid, TDBText, TDBImage, TDataSource, TTable и TDBMemo, а также - компоненты стандартного диалога TSaveDialog. Уже на стадии проектирования вы сможете просматривать соответствующую таблицу базы данных и с помощью линейки прокрутки компоненты сетки TDBGrid открывать "живые" факты из жизни обитателей моря. Чтобы начать работу с существующим проектом приложения, выполните следующие действия:

- По команде главного меню File | Open Project откройте диалог выбора проектов.
- Войдите в каталог \...\CBuilder\Examples\Dbtasks\FishFact.
- Выберите проектный файл с именем
Fish fact и нажмите кнопку Open

- Open

(Рис.2.14).

Рис. 2.14. Пример приложения, использующего существующий проект.

Источник данных приложения определяется свойствами компоненты TTable:

свойство DatabaseName указывает на базу данных BCDEMOS, а свойство TableName - на таблицу BIOLIFE.

Если захотите, скомпилируйте и соберите этот пример. После запуска вы снова получите доступ к изображениям и описаниям рыб в установленной таблице базы данных (Рис. 2.15). Сохраните информацию о заинтересовавшей вас рыбе в виде текстового файла, открывая кнопкой Save стандартный диалог компоненты TSaveDialog. Кнопка Exit осуществляет выход из приложения.

Рис. 2.15. Приложение FISH FACTS в работе.

2.3.2 Пример использования модулей данных

Архитектура приложений C++Builder для баз данных основана на применении технологии RAD и объектно-ориентированного программирования как к пользовательскому интерфейсу, так и к бизнес-логике баз данных. Модули данных (Data Modules) поддерживают естественное отделение кодов бизнес-логики обработки данных и компонент пользовательского интерфейса, размещенных на форме.

Объекты модулей данных, доступные на этапе визуального проектирования и скрытые во время работы приложения, действуют как централизованный источник информации, который организует не только сам доступ к базам данных, но и бизнес-логику их обслуживания.

Реализация различных способов доступа к элементам баз данных сосредоточена в компонентах вкладки Data Access Палитры компонент. Эти интерфейсные элементы заключают в себе такие характеристики источника информации, как спецификации конкретной базы данных, таблиц, запросов и ссылок к полям в некоторой записи.

Использование модулей данных из Хранилища объектов дает вам возможность моментально адаптировать их к вашей задаче, перетаскивая нужные вам объекты и компоненты на форму создаваемого приложения. Изменения, внесенные вами в бизнес-логику конкретного модуля данных или в интерфейсные компоненты, никак не отражаются на использовании того же модуля другими разработчиками.

Чтобы создать на основе готового модуля приложение "Заказчики" с данными о заказчиках товара, производимого некоторой компанией, выполните следующие действия:

=> Выполните команду File | New из главного меню. => На вкладке Data Modules выберите значок Customer Data, а затем нажмите

кнопку ОК.

=> Дважды щелкните мышью на таблице Customers модуля данных. Откроется список Customerdata->Customers полей таблицы заказчиков (Рис. 2.16).

Рис. 2.16. Поля таблицы заказчиков Customers модуля данных Customer Data.

=> Удерживая нажатой клавишу Shift, выберите нужные вам поля из списка. => Перетащите выбранные поля и разместите их на форме. => Перетащите компоненту навигатора базы данных DBNavigator из вкладки Data Control Палитры и в ее свойстве DataSource укажите источник данных

CustomerData->CustomerSource.

Теперь вы сможете просматривать "живые" данные всех записей в таблице заказчиков уже на стадии проектирования формы приложения (Рис. 2.17). Для этого нажимайте кнопки со стрелками на панели, расположенной в верхней части списка полей таблицы заказчиков. С помощью Инспектора объектов модифицируйте по своему усмотрению свойства компонент полей (например, в свойствах Caption замените все названия на русскоязычные).

Рис. 2.1 7. Форма приложения для доступа к таблице заказчиков.

Когда вы скомпилируете и соберете приложение, вы увидите те же данные, что и на стадии проектирования.

Рис. 2.18. Приложение "Заказчики" в работе. | Теперь, пользуясь кнопками панели навигатора, вы сможете редактировать данные -вставлять новые записи, Bы черкивать ненужные, менять содержание полей и т.д. Рис. 2.18 показывает результат введения в таблицу атрибутов вымышленного отечественного заказчика (после нажатия кнопки "+"). Внимание: На этом примере вы можете впервые столкнуться со сложностями в использовании русского шрифта при попытках модифицировать оригинальные таблицы демонстрационной базы данных BCDEMOS, входя щей в комплект C++Builder

Теперь, пользуясь кнопками панели навигатора, вы сможете редактировать данные -вставлять новые записи, Bы черкивать ненужные, менять содержание полей и т.д. Рис. 2.18 показывает результат введения в таблицу атрибутов вымышленного отечественного заказчика (после нажатия кнопки "+"). Внимание: На этом примере вы можете впервые столкнуться со сложностями в использовании русского шрифта при попытках модифицировать оригинальные таблицы демонстрационной базы данных BCDEMOS, входя щей в комплект C++Builder

Standard. He думаю, что такое ограничение корпорация Borland ввела сознательно. Не относитесь к этой проблеме слишком серьезно - ведь нашей задачей является обучение современной методике программирования СУБД, для чего демонстрационная база дает достаточный экспериментальный материал (хотя и англоязычный), а вовсе не модификация самой BCDEMOS.

Естественно, что разработчики настоящих приложении имеют дело с реальными базами данных, внутреннее устройство которых они обязаны знать досконально.

2.3.3 Пример использования Мастера форм

Прежде, чем начать работу с последним примером этой главы, просмотрите Словарь баз дачных (Database Dictionary), выполнив команду главного меню Database | Explorer (Проводник базы данных). Открывшееся окно словаря (Рис. 2.19) состоит из двух панелей. В древовидном перечне левой панели найдите таблицу базы данных, которую вы собираетесь связать с формой проектируемого приложения. Для разработки приложения "Моя записная книжка" я создал в Excel таблицу с именем NOTEBOOK. He беда, если вы не захотите построить собственную рабочую таблицу в рамках Excel, Access, Paradox или какой-нибудь другой системы - при изучении примера можно воспользоваться англоязычным прототипом CLIENTS из базы данных BCDEMOS.

Описание выбранной таблицы представлено тремя вкладками правой панели. На вкладке Definition вы найдете характеристики таблицы (дата, время создания, тип). Вкладка Enter SQL позволяет вводить и редактировать команды на языке структурированных запросов SQL к таблицам базы данных, расположенных на локальном или удаленном сервере. Если вы вводите команды изменения данных таблицы INSERT, UPDATE или DELETE, убедитесь, что опция меню Options | Live Queries не выбрана. Чтобы выполнить текущую команду SQL, нажмите кнопку с изображением молнии справа от поля редактирования. Вкладка Data показывает текущее содержание таблицы:

Рис. 2.19. Содержание таблицы NOTEBOOK а окне Проводника базы данных.

Для использования Мастера форм при создании приложения выполните следующие действия:

=> С помощью команды Database | Form Wizard из главного меню вызовите Мастер форм, который проведет вас по диалоговым страницам характеристик создаваемой формы.

=> На первой странице (Рис. 2.20) укажите, что создаете простую форму на основе компонентных объектов таблицы базы данных (Create a form using TTable objects). Нажмите кнопку Next.

Рис. 2.20. Первая страница диалога Мастера форм.

=> На второй странице (Рис. 2.21) найдите вашу собственную таблицу NOTEBOOK.DBF (или ее прототип CLIENTS.DBF) из базы данных с псевдонимом BCDEMOS, которая будет использоваться формой приложения. В данном примере обе таблицы хранятся в каталоге CAProgram Files\Borland\CBuilder\Examples\DATA. Нажмите кнопку Next.

Рис. 2.21. Вторая страница диалога Мастера форм.

=> На третьей странице (Рис. 2.22) выберите нужные вашему приложению поля таблицы из списка Available Fields и нажатием кнопки ">" перенесите их в список Ordered Selected Fields. В данном примере выбраны 5 полей. Нажмите кнопку Next.

Рис. 2.22. Третья страница диалога Мастера форм.

=^> На четвертой странице (Рис. 2.23) задайте расположение выбранных полей на форме - вертикально. Нажмите кнопку Next.

Рис. 2.23. Четвертая страница диалога Мастера форм.

=> На пятой странице (Рис. 2.24) задайте положение названий относительно полей - слева. Нажмите кнопку Next.

Рис. 2.24. Пятая страница диалога Мастера форм.

=> На шестой странице (Рис. 2.25) можно дополнительно потребовать создать для формы новый модуль данных. Нажмите кнопку Finish, завершая разработку формы приложения базы данных под управлением Мастера форм.

Рис. 2.25. Шестая страница диалога Мастера форм.

Далее, как обычно, можно воспользоваться Инспектором объектов, чтобы адаптировать компоненты формы к более удобному для вас представлению (Рис. 2.26).

Рис. 2.26. Форма приложения, созданная Мастером форм.

Когда вы скомпилируете и соберете приложение, исходные данные таблицы появятся в том виде. как вы их видели в Словаре баз данных.

Рис. 2.27. Приложение "Моя записная книжка' и работе. | Теперь, пользуясь кнопками панели навигатора, вы сможете редактировать содержимое записной книжки - вставлять новые записи, вычеркивать ненужные, редактировать содержание полей и т.д. Рис. 2.27 отображает запись, которая стала начальной в результате вычеркивания первой записи в исходной таблице NOTEBOOK (после нажатия кнопки "-"). Естественно, что оригинальная таблица CLIENTS способна предоставить вам другие данные (Рис. 2.28).

Рис. 2.28. Работа приложения базы данных с таблицей CLIENTS.

В последнем примере Мастер форм проявил себя как чрезвычайно полезный для новичков и удобный в обращении встроенный инструмент C++Builder, который позволяет разработать полностью функциональное приложение базы данных буквально за несколько минут. Проектирование формы приложения, по существу, заключается в выборе опций, предлагаемых диалоговыми страницами Мастера форм. Мастер форм самостоятельно закладывает фундамент прототипа вашего приложения, вообще не прибегая к "ручному" программированию. Конечно, чтобы удовлетворить конкретным требованиям поставленной задачи, вам не обойтись без написания специфических кодов для обработки событий, ошибок и отображения данных в различных видах.

2.4 Итоги

C++Builder для операционных систем Windows 95 и NT обеспечивает высокую скорость визуальной разработки методом перетаскивания компонент на форму приложения. Мы убедились в высокой продуктивности и гибкости повторно используемых компонент, в особенности - элементов пользовательского интерфейса с базами данных, что в сочетании с высокопроизводительными компилятором и загрузчиком действительно позволяет быстро переходить от начального прототипа приложения к работающей программе.