Тема: Обзор невизуальных и визуальных компонентов для работы с базами данных
Практическая работа №3
Цель: знакомство с визуальными и невизуальными компонентами Delphi.Невизуальные компоненты для работы с БД
Невизуальные компоненты Delphiслужат для соединения приложения с таблицами БД. Они расположены на страницах компонентов BDE, Data Access палитры компонентов в интегрированной среде разработчика Delphi. Невизуальный компонент "перетаскивается" из палитры компонентов в форму разрабатываемого приложения. После этого Delphi автоматически описывает в форме экземпляр компонента указанного класса. Далее разработчик определяет свойства компонента, кодирует обработчики событий, в программном коде вызывает необходимые ему методы компонента.
Компонент | Назначение |
TDataSource | Служит промежуточным звеном в цепочке "Набор данных ‒ TDataSource ‒ Визуальные компоненты для работы с данными". Позволяет устанавливать некоторые параметры БД, устанавливать состояние БД, отслеживать изменения в БД. |
TTable | Реализует набор данных, источником данных для которого является одна таблица БД. Содержит множество методов, свойств и событий, посредством которых можно выполнять над БД богатый спектр операций. Многие из них расширяют множество свойств, методов и событий, определенных в предках TTable ‒ компонентах TDataSet и TBDEDataSet. |
TQuery | Реализует набор данных, источником данных для которого являются одна или несколько таблиц БД. Структура записи НД, состав НД определяются SQL-запросом (оператор SELECT). Кроме выдачи НД, используется для групповых операций обновления, добавления или удаления в ТБД, а также может выполнять любые действия, предусмотренные реализацией языка SQL для той СУБД, с которой работает TQuery. Для типов данных так называемых «персональных» СУБД позволяет реализовывать «локальный» вариант SQL. При помощи TQuery можно реализовывать как статические, так и динамические (изменяющиеся в процессе выполнения приложения) SQL-запросы. |
TIndexDefs | Позволяет получить информацию об индексах, определенных для данной ТБД, и об индексных полях для текущего индекса; реализует поиск индекса по группе индексных полей. |
TFieldDefs | Позволяет получить информацию о полях, определенных в составе записей данной ТБД. |
TField | Реализует поле НД. Помимо полей, физически определенных в ТБД и включенных в состав конкретного ид, компонент TField создается для каждого вычисляемого поля или поля, возвращающего значение из другого НД (lookup), а также для результатов вычисления выражений и агрегатных функций в SQL-запросах. Предоставляет набор свойств, методов и событий, посредством которых можно управлять поведением поля. Собственно TField есть родительский класс для дочерних компонентов, реализующих поля конкретных типов (TStringField, ТIntegerField, и т.д.). TField определяет свойства, методы и события, которые по праву наследования доступны во всех дочерних классах полей. |
Визуальные компоненты для работы с БД
Визуальные компоненты Delphi предназначены для визуализации записей наборов данных (например, компонент TDBGrid) или отдельных полей текущей записи набора данных (например, TDBEdit, TDBText). Эти компоненты расположены на странице компонентов Data Controls палитры компонентов в интегрированной среде разработчика Delphi. Визуальный компонент "перетаскивается" из палитры компонентов в форму разрабатываемого приложения. После этого Delphi автоматически описывает в форме экземпляр компонента указанного класса. Далее разработчик определяет взаимодействие визуального компонента с невизуальными компонентами.
Компонент | Назначение |
TDBText | Показывает «только для чтения» значение поля текущей записи НД. |
TDBEdit | Обеспечивает просмотр и изменение значения поля текущей записи НД. Поля – любого типа, кроме полей комментариев и BLOB. |
TDBCheckBox | Обеспечивает просмотр и изменение значение поля типа Boolean текущей записи НД |
TDBRadioGroup | Обеспечивает возможность выбора значений для поля, которое может содержать фиксированное число вариантов значений. Значения показываются в виде радиокнопок. |
TDBMemo | Позволяет просматривать и корректировать значение мемо-поля (поля комментариев) в режиме текстового редактора. |
TDBRichEdit | Имеет то же значение, что и TDBMemo, но позволяет работать с текстом формата RTF, включающим разные шрифты, графику и пр. |
TDBImage | Позволяет просматривать графические поля, заносить в них содержимое. |
TDBListBox | Применяется, когда нужно выбрать значение поля из предустановленного списка значений; значения показываются в виде строк в списке фиксированного размера. Содержимое списка определяется свойством. Items. |
TDBComboBox | Применяется для тех же целей, что и TDBListBox, но список «выпадающий» |
TDBLookupListBox | Применяется для выбора значений поля из списка значений, который формируется из определенного столбца другого набора данных. Высота списка фиксирована. |
TDBLookupComboBox | Применяется для тех же целей, что и TDBLookupListBox, но список – комбинированного вид («выпадающий») |
TDBGrid | Показывает содержимое полей НД в «табличном» вид, когда записям соответствуют строки, полям – столбцы. |
TDBCtrlGrid | «Продвинутая» версия компонента TDBGrid, позволяющая, в отличие от последнего, показывать содержимое одной записи НД в нескольких строках. |
TColumn | Столбец компонента TDBGrid, обладающий свойствами и методами, которые позволяют управлять его поведением. |
TQuickRep | Компонент TQuickRep и связанная с ним группа компонентов позволяют разрабатывать формы отчетов. |
TDBNavigator | Позволяет осуществлять навигацию по записям НД, переводить НД в состояние вставки, изменения, добавление записи, запоминание изменения. |
TDBChart | Реализует графическое представление данных, хранящихся в компонентах типа «набор данных». |
Рис.2.1. Общая структура приложения, работающего с базами данных
Задание. Создать приложение, которое позволит работать с созданной ранее таблицей Студент
Запустим Delphi. По умолчанию Delphi при своем запуске создает форму для нового приложения. Воспользуемся ею.
В палитре компонентов Delphi на странице BDE выберем мышью невизуальный компонент TTable (рис. 2.1), щелкнем на нем мышью и затем щелкнем мышью в форме. После этого изображение компонента останется в форме.
Рис. 2.2. Палитра компонентов Delphi с выделенным компонентом TTable
После того, как мы разместили в форме компонент TTable, установим его свойства. Для этой цели воспользуемся инспектором объектов (Object Inspector), который обычно помещается слева от формы. Если он не видим, его можно вызвать, нажав кнопку F11. Инспектор объектов позволяет устанавливать свойства того компонента в форме, который выделен при помощи мыши. Выделим мышью компонент TTable.
Установим значение свойства DatabaseName (псевдоним БД) в Proba при помощи выпадающего списка или введя его вручную. Установим значение свойства TableName (имя таблицы БД) в Студент.DB при помощи выпадающего списка. После этого установим значение свойства Active в True. После этого произойдет реальное связывание компонента TTable (он по умолчанию имеет имя Tablel) с реально существующей таблицей Студент.DB.
Компонент TTable и компонент TQuery (его мы рассмотрим позже) служат для хранения наборов данных. Понятие набора данных несколько шире, чем понятие таблицы БД, поскольку набор данных может содержать:
• подмножество записей или полей таблицы БД (компоненты TTable, TQuery);
• записи, сформированные из нескольких таблиц БД (компонент TQuery).
Расположим в форме компонент TDataSource из страницы Data Access.
Рис. 2.3. Палитра компонентов Delphi с выделенным компонентом TDataSource
Он служит в качестве связующего звена между невизуальными компонентами (в данном случае Tablel) и визуальными компонентами, которые мы добавим в форму позднее. Поэтому компоненты TDataSource часто называют источниками данных. Установим свойство DataSet (имя набора данных) компонента TDataSource в значение Tablel путем выбора из выпадающего списка.
Теперь перейдем к визуальным компонентам. Расположим в форме компонент TDBGrid, взяв его из палитры компонентов со страницы Data Controls.
Рис. 2.4. Палитра компонентов Delphi с выделенным компонентом TDBGrid
Установим свойство DataSource в значение DataSource 1 (это имя, присвоенное Delphi по умолчанию созданному нами перед этим компоненту TDataSource). Компонент TDBGrid служит для отображения записей набора данных в табличной форме.
Рис.2.5. Вид формы на этапе разработки
Выберем элемент меню File \ Save Project As и сохраним проект.
После этого выполним приложение (нажать кнопку F9).
Добавлять записи в набор данных (и, следовательно, в таблицу Студент.DB) можно прямо из компонента TDBGrid. Для этого нужно нажать на клавиатуре кнопку Insert или, находясь на последней записи набора данных, кнопку "стрелка вниз". Набор данных автоматически перейдет в режим добавления новой записи. После ввода значений в поля записи запомнить запись в наборе данных можно, перейдя на другую запись при помощи клавиш управления курсором. Отказаться от запоминания можно, нажав кнопку Esc.
Для изменения записи следует переместить указатель текущей записи в нужное место и изменить значения там, где это необходимо. Набор данных автоматически перейдет в режим редактирования.
Для удаления записи следует установить на нее указатель текущей записи и нажать комбинацию кнопок Ctrl+Del.
Расположим в форме компонент TDBNavigator из страницы Data Controls. Установим свойство DataSource в значение DataSource 1. Этот компонент представляет собой набор кнопок и обеспечивает интерфейс для управления НД, позволяя пользователю осуществлять перемещение по НД, добавление, изменение и удаление записей и т.д.
Добавим в форму компонент TDBText. Он применяется для показа значения текстового поля текущей записи НД.Установим свойстваDataSourceв значение DataSource 1, DataField в значение имени поля (допустим, номер зачетки).
Поместим на форму компонент TDBEdit. Позволяет редактировать значение строкового поля текущей записи НД. Установим свойстваDataSourceв значение DataSource 1, DataField в значение имени поля (допустим, ФИО).
Визуальным компонентам для работы с текущей записью набора данных посвящена отдельная практическая работа.