Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
16.04.2013
Размер:
886.27 Кб
Скачать

3. Создание приложений и изучение свойств компонентов

Задание 1. С помощью эксперта форм БД создать приложение с формой типа “сетка” для просмотра таблицы PARTS.DB из БД DBDEMOS, содержащей информацию о поставках изделий. Проверить работу приложения и ознакомиться со свойствами компонентов, помещенных в форму экспертом форм БД.

Рис.6. Окно связывания таблиц.

Пояснение к заданию 1. Эксперт форм помещает в форму компоненты доступа к данным Table1 и DataSource1, компонент DBGrid1 для отображения данных из PARTS.DB в стандартном табличном виде (в виде “сетки”) и компонент DBNavigator для управления данными. В табл.1 приведены значения важнейших свойств используемых компонентов, автоматически установленные экспертом форм; при разработке приложения “вручную” программист должен задать их самостоятельно.

Таблица 1

Свойство

Значение

Комментарий

Table1: TTable

Active

False

Управляет открытием таблицы

DatabaseName

DBDEMOS

Спецификация каталога или псевдоним БД

Name

Table1

Имя компонента

TableName

parts.db

Имя файла с таблицей

DataSource1: TDataSource

AutoEdit

True

Автоматически задает состояние Edit для набора данных при начале редактирования данных

DataSet

Table1

Имя компонента, через который передаются данные из БД и в БД

Name

DataSource1

Имя компонента

DBGrid1: TDBGrid

DataSource

DataSource1

Имя компонента, через который осуществляется обмен и управление данными

Name

DBGrid1

Имя компонента

DBNavigator: TDBNavigator

DataSource

DataSource1

Имя компонента, через который осуществляется обмен и управление данными

Name

DBNavigator

Имя компонента

VisibleButtons

[nbFirst,nbPrior,..., nbRefresh]

Список используемых кнопок навигатора

Свойство Active компонента Table1, управляющее открытием таблицы, может устанавливаться вручную в окне инспектора объектов или программно методами Open (соответствует Active=True) и Close (соответствует Active=False). При установке свойства Active=True содержимое открытой таблицы появляется на экране в визуальном компоненте, отображающем данные. Следует запомнить, что для компонента типа TTable значения свойств DatabaseName и TableName доступны для изменения только при Active=False !

Компонент типа TBDNavigator (навигатор) управляет данными, отображаемыми в визуальных компонентах, использующих одноименный компонент типа TDataSource. Управление осуществляется с помощью кнопок навигатора (рис.7). Наличие конкретной кнопки задается в свойстве VisibleButtons установкой соответствующего идентификатора nbXxx в значение True (есть кнопка) или False (нет кнопки).

К следующей записи (nbNext) Вставить запись (nbInsert) Редактировать

запись (nbEdit)

К первой записи (nbFirst) Отменить редакти-

рование (nbCancel)

К предыдущей записи (nbPrior) Восстановить запись

из БД (nbRefresh)

К последней записи (nbLast) Удалить Сохранить запись запись (nbDelete) в БД (nbPost)

Рис.7. Кнопки навигатора.

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

1. Задать спецификацию используемого каталога или псевдоним БД в свойстве DatabaseName компонента типа TTable.

2. Задать в свойстве TableName компонента типа TTable имя файла, содержащего нужную таблицу. Имя файла выбирается из списка, который появляется при нажатии кнопки, расположенной в строке инспектора объектов, соответствующей свойству TableName.

3. В свойстве Dataset компонента типа TDataSource задать имя используемого компонента типа TTable. Значение свойства Dataset выбирается из списка аналогично тому, как выбиралось имя файла в пункте 2.

4. Задать в свойстве DataSource визуального компонента, отображающего данные или управляющего данными (в задании 1 это компоненты типа TDBGrid и TDBNavigator), имя компонента типа TDataSource, через который осуществляется обмен и управление данными. Значение свойства DataSource выбирается из списка аналогично тому, как выбиралось имя файла в пункте 2.

Задание 2. С помощью эксперта форм БД создать приложение с формой типа “ввод/редактирование” для просмотра таблицы EMPLOYEE.DB из БД DBDEMOS, содержащей информацию о служащих. Проверить работу приложения и ознакомиться со свойствами компонентов, помещенных в форму экспертом форм БД.

Пояснение к заданию 2. В форме, созданной экспертом форм, для отображения значений полей текущей записи используются компоненты типа TDBEdit, которые связаны с компонентом DataSource1 через свои свойства DataSource. Имя поля, значение которого отображается в компоненте типа TDBEdit, задается свойством DataField этого компонента. Надписи к полям задаются компонентами типа TLabel.

Задание 3. С помощью эксперта форм БД создать приложение с формой типа “главная/подчиненная” для просмотра таблицы CUSTOMER.DB и связанной с ней таблицы ORDERS.DB из БД DBDEMOS, в которых содержится информация о компаниях-покупателях и сделанных заказах. Информацию из каждой таблицы отображать в компоненте типа TDBGrid. Проверить работу приложения и ознакомиться со свойствами компонентов, помещенных в форму экспертом форм БД.

Пояснение к заданию 3. Эксперт форм помещает в форму для каждой таблицы свой комплект компонентов типа TTable, TDataSource, TDBGrid для доступа к данным и их отображения, а также один компонент типа TDBNavigator для управления данными, хранящимися в главной таблице CUSTOMER.DB. В табл.2 приведены значения важнейших свойств используемых компонентов, автоматически установленные экспертом форм; при разработке приложения “вручную” программист должен задать их самостоятельно.

При создании приложения без использования эксперта форм программисту необходимо выполнить следующие действия:

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

2, Задать свойства компонентов из комплекта для главной таблицы (см. табл.2).

3. Задать свойства компонентов из комплекта для подчиненной таблицы, установив связь между полями связанных таблиц (см. табл.2).

4. Разместить навигатор и связать его с главной таблицей.

Таблица 2

Свойство

Значение

Комментарий

Table1: TTable (главная таблица)

Active

False

Управляет открытием таблицы

DatabaseName

DBDEMOS

Спецификация каталога или псевдоним БД

Name

Table1

Имя компонента

TableName

customer.db

Имя файла с таблицей

DataSource1: TDataSource

DataSet

Table1

Имя компонента, через который передаются данные из БД и в БД

Name

DataSource1

Имя компонента

DBGrid1: TDBGrid

DataSource

DataSource1

Имя компонента, через который осуществляется обмен и управление данными

Name

DBGrid1

Имя компонента

Table2: TTable (подчиненная таблица)

Active

False

Управляет открытием таблицы

DatabaseName

DBDEMOS

Спецификация каталога или псевдоним БД

MasterSource

DataSource1

Имя компонента типа TDataSource, связанного с главной таблицей

MasterFields

CustNo

Список полей главной таблицы для связи с подчиненной таблицей

IndexFieldNames

CustNo

Индексный ключ (список полей подчиненной таблицы, по значениям которых упорядочиваются записи)

Name

Table2

Имя компонента

TableName

orders.db

Имя файла с таблицей

DataSource2: TDataSource

DataSet

Table2

Имя компонента, через который передаются данные из БД и в БД

Name

DataSource2

Имя компонента

DBGrid2: TDBGrid

DataSource

DataSource2

Имя компонента, через который осуществляется обмен и управление данными

Name

DBGrid2

Имя компонента

DBNavigator: TDBNavigator

DataSource

DataSource1

Имя компонента, чьим набором данных управляет навигатор

Name

DBNavigator

Имя компонента

Примечание. Для связи подчиненной таблицы с главной таблицей можно использовать конструктор связанных полей (Field Link Designer), который вызывается из инспектора объектов нажатием кнопки, расположенной в строке свойства MasterFields. Окно конструктора имеет вид, подобный показанному на рис.6, и позволяет выбрать нужный индекс (индексный ключ) и установить связь между полями подчиненной (detail) и главной (master) таблиц.

Задание 4. Приложение, созданное при выполнении задания 3, дополнить компонентами, обеспечивающими доступ, управление и отображение данных из таблицы ITEMS.DB, и связать эту таблицу в качестве подчиненной с таблицей ORDERS.DB. Проверить работу приложения, которое должно отображать данные из трех связанных таблиц.

Пояснение к заданию 4. Чтобы в рабочем поле формы появилось свободное место для размещения дополнительных компонентов, нужно увеличить размер формы, а для компонентов типа TDBGrid задать значение свойства Align=alNone и уменьшить высоту этих компонентов.

Задание 5. Приложение, созданное при выполнении задания 4, дополнить компонентами, обеспечивающими доступ, управление и отображение данных из таблицы PARTS.DB, и связать эту таблицу в качестве подчиненной с таблицей ITEMS.DB. Из таблицы PARTS.DB требуется отображать только содержимое поля Description (описание поставляемого изделия) в компоненте типа TDBEdit. Проверить работу приложения, которое должно отображать данные из четырех связанных таблиц.

Задание 6. С помощью эксперта форм БД создать приложение с формой типа “ввод/редактирование” для просмотра таблицы ITEMS.DB из БД DBDEMOS.

Дополнить созданное приложение компонентом типа TDBGrid, чтобы продублировать отображение содержимого таблицы ITEMS.DB. В таблице ITEMS.DB значения поля OrderNo не должны отличаться от номеров заказов, зафиксированных в таблице ORDERS.DB; значения поля PartNo не должны отличаться от номеров поставок изделий, зафиксированных в таблице PARTS.DB; значения поля ItemNo должно находиться в определенном диапазоне (например, 1-5).

Чтобы обеспечить ввод только допустимых значений в указанные поля, а также установку номера поставки путем выбора названия изделия, и запретить доступ к отображаемому значению поля Discount, следует в форме, созданной экспертом форм БД, заменить компоненты типа TDBEdit компонентами других типов, указанными в табл.3.

Таблица 3

Отображаемое

поле

Тип

компонента

Отображаемое

поле

Тип

компонента

OrderNo

PartNo

TDBLookupList

TDBLookupCombo

ItemNo

Discount

TDBComboBox

TDBText

Настроить эти компоненты, чтобы:

1) поле OrderNo (номер заказа) содержало значение, имеющееся в таблице

ORDERS.DB;

2) поле ItemNo (порядковый номер изделия в заказе) содержало значение, выбираемое из диапазона 1-5;

3) поле PartNo по номеру поставки находило в таблице PARTS.DB и отображало в рабочем поле формы название соответствующего поставляемого изделия (товара);

4) поле Discount (скидка) было доступно только для просмотра.

Проверить работу приложения, осуществив корректировку имеющихся и вставку новых строк в таблицу ITEMS.DB; изменение данных наблюдать в дополнительно размещенном компоненте типа TDBGrid.

Пояснение к заданию 6. Компонент типа TDBLookupList или TDBLookupCombo позволяет устанавливать значение поля в строке таблицы с учетом значений полей, хранящихся в другой (связанной) таблице. Таблица (ORDERS.DB или PARTS.DB), связанная с таблицей ITEMS.DB, должна быть представлена в рабочем поле формы компонентами типа TTable и TDataSource. Связь таблиц задается установкой свойств компонента, перечисленных в табл.4.

Компонент типа TDBComboBox отображает значение поля и задает список возможных значений этого поля. Пример устанавливаемых значений свойств приведен в табл.5. Отличие компонента типа TDBText от компонента типа TDBEdit заключается в недоступности отображаемого значения поля для изменения. Для этих компонентов обязательно задаются свойства DataSource, DataField и Name.

Таблица 4

Свойство

Значение

Комментарий

DBLookupList1: TDBLookupList

DataSource

DataSource1

Имя компонента, обеспечивающего доступ к таблице ITEMS.DB

DataField

OrderNo

Имя поля в таблице ITEMS.DB, значение которого отыскивается в таблице ORDERS.DB

LookupSource

DataSource2

Имя компонента, через который осуществляется обмен и управление данными из таблицы ORDERS.DB, связанной с таблицей ITEMS.DB

LookupDisplay

OrderNo

Имя поля в таблице ORDERS.DB, значения которого отображаются в компоненте DBLookupList1

LookupField

OrderNo

Имя поля в таблице ORDERS.DB, значение которого отыскивается по значению поля, указанного в свойстве DataField

DBLookupCombo1: TDBLookupCombo

DataSource

DataSource1

Имя компонента, обеспечивающего доступ к таблице ITEMS.DB

DataField

PartNo

Имя поля в таблице ITEMS.DB, значение которого отыскивается в таблице PARTS.DB

LookupSource

DataSource3

Имя компонента, через который осуществляется обмен и управление данными из таблицы PARTS.DB, связанной с таблицей ITEMS.DB

LookupDisplay

Description

Имя поля в таблице PARTS.DB, значение которого отображается в компоненте DBLookupCombo1

LookupField

PartNo

Имя поля в таблице PARTS.DB, значение которого отыскивается по значению поля, указанного в свойстве DataField

Таблица 5

Свойство

Значение

Комментарий

DBComboBox1: TDBComboBox

DataField

ItemNo

Имя поля, значение которого отображается и устанавливается

DataSource

DataSource1

Имя компонента, обеспечивающего доступ к таблице ITEMS.DB

Items

1

2

3

4

5

Список возможных значений, присваиваемых полю текущей записи; значения задаются в текстовом редакторе, который вызывается из инспектора объектов нажатием кнопки, расположенной в строке свойства Items