Компонент TDBNavigator

Строго говоря, компонент TDBNavigator (навигатор БД) не предназначен для отображения данных. Его назначение - дать пользователю программыудобное средство перемещения по записям НД и облегчить ему такие действия, как вставка новой записи, а также редактирование и удаление существующей записи. Однако навигатор БД используется только совместно с компонентами визуализации, поэтому мне кажется вполне уместным рассмотреть его особенности именно в этом разделе.

На рисунке 12.12 показаны кнопки навигатора.

Рисунок 8.5 – Кнопки навигатора БД

Назначение кнопок в порядке следования слева направо:

ü First - устанавливает курсор на первую запись;

ü Prior - устанавливает курсор на предыдущую запись;

ü Next - устанавливает курсор на следующую запись;

ü Last - устанавливает курсор на последнюю запись;

ü Insert - переводит НД в режим вставки новой записи;

ü Delete - удаляет текущую запись;

ü Edit - переводит НД в режим редактирования;

ü Post - запоминает изменения, сделанные в текущей записи;

ü Cancel - отменяет изменения, сделанные в текущей записи;

ü Refresh - обновляет НД (для TQuery - только если запрос обновляемый).

С помощью свойства DataSource компонент связывается с нужным источником данных TDataSource - это все, что необходимо для его нормальной работы. Представленное ниже свойство управляет отображением диалогового окна с просьбой подтвердить удаление записи (значение True этого свойства выводит окно):

propertyConfirmDelete: boolean;

Если следующее свойство имеет значение True, кнопки будут плоскими, в противном случае - объемными:

propertyFlat: boolean;

С помощью другого свойства можно отображать только те кнопки навигатора, которые действительно необходимы:

typeTNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);

typeTButtonSet = set of TNavigateBtn;

propertyVisibleButtons: TButtonSet;

Например, если НД является результатом выполнения необновляемого запроса, в навигаторе имеет смысл оставить только первые 4 кнопки.

С помощью следующего метода можно имитировать щелчок на нужной кнопке навигатора:

procedureBtnClick (Index: TNavigateBtn);

Для компонента определены два специфических события:

typeENavClick = procedure(Sender: TObject; Button: TNavigateBtn) of object;

propertyBeforeAction: ENavClick;

propertyOnClick: ENavClick;

Обработчик первого события получает управление перед выполнением действия, связанного со щелчком на кнопке Button, в то время как обработчик OnClick - после выполнения действия.


ПРИЛОЖЕНИЕ 2. БД "ПОСТАВЩИК КНИГ"

Ниже приводится описание 5-ти основных таблиц.

Таблица 1.1 - NAKLS

 

Имя поля Назначение
Naklld Уникальный идентификатор накладной. По этому полю нужно создать первичный ключ
nDate Дата составления накладной. По этому полю можно создать индекс для сортировки накладных по мере их поступления
nType Тип накладной: 0 - покупка у поставщика; 1 - продажа покупателю; 2 - возврат поставщику; 3 - возврат от покупателя; 4 - книги получаются по обмену; 5 - книги передаются по обмену; 6 - покупка с предоплатой; 7 - продажа с предоплатой
nFirm Уникальный идентификатор партнера (поле FirmId таблицы FIRMS)
nBook Уникальный идентификатор книги (поле Bookld таблицы BOOKS)

Таблица 1.2 - BOOKS

 

Имя поля Назначение
Bookld Уникальный код книги (первичный ключ)
bName Название книги (индексное поле)
bAuthor Автор(ы)
bPublish Издательство
bYear Год выпуска
bPrice Цена покупки книги

Таблица 1.2 - FIRMS

Имя поля Назначение
Firmld Уникальный идентификатор партнера (первичный ключ)
fName Наименование партнера (индексное поле)
fAddress Адрес партнера
fCity Город
fPhone Телефон(ы)
fEMaiL Адрес электронной почты

Таблица 1.4 - MOVEBOOK

Имя поля Назначение
Moveld Уникальный идентификатор (первичный ключ)
mNakl Код накладной из поля Naklld таблицы NAKLS (индексное поле)
mBook Код книги из поля Bookld таблицы BOOKS (индексное поле)

Таблица 1.5 - PAYMENTS

Имя поля Назначение
PayID Уникальный идентификатор платежного документа (первичный ключ)
pFirm Код партнера из поля Firmld таблицы FIRMS
pOut Направление платежа: True - партнеру; False - от партнера
pDate Дата платежа
pSum Сумма платежа

 

Таблица 1.6 - TYPENAKL

Имя поля Назначение
TypeID Уникальный идентификатор типа накладной (первичный ключ)
tName Содержание типа наладной