Навигация по набору данных

Перемещение или навигация по записям набора данных может осуществляться несколькими путями. Например, в компонентах TDBGrid и TDBCtrlGrid, которые отображают сразу несколько записей набора данных, можно использовать клавиши вертикального перемещения курсора или вертикальную полосу прокрутки.

Но что делать, если на форме находятся только компоненты, отображающие одно поле только текущей записи набора данных (TDBEdit, TDBCombоВох и т. д.)? Очевидно, что в этом случае на форме должны быть расположены дополнительные элементы управления, отвечающие за перемещение по записям.

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

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

Компонент TDBNavigator при помощи свойства DataSource связывается с компонентом TDataSource и через него с набором данных. Такая схема позволяет обеспечить изменение текущих значений полей сразу во всех связанных с TDataSource компонентах отображения данных. Таким образом, TDBNavigator только дает команду на выполнение перемещения по набору данных или другой управляющей операции, а всю реальную работу выполняют компонент набора данных и компонент TDataSource. Компонентам отображения данных остается только принять новые данные от своих полей.

Рис. 15.4. Назначение кнопок компонента TDBNavigator

Компонент TDBNavigator содержит набор кнопок, каждая из которых отвечает за выполнение одной операции над набором данных. Всего имеется 10 кнопок, разработчик может оставить в наборе любое количество кнопок в любом сочетании. Видимостью кнопок управляет свойство visibleButtons:

type

TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nblnsert, nbDelete, 

nbEdit, nbPost, nbCancel, nbRefresh);

TButtonSet = set of TNavigateBtn; 

property VisibieButtons: TButtonSet;

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

nbFirst — перемещение на первую запись набора данных; 

nbPrior — перемещение на предыдущую запись набора данных;

nbNext — перемещение на следующую запись набора данных;

nbLast — перемещение на последнюю запись набора данных; 

nblnsert — вставка новой записи в текущей позиции набора данных;

nbDelete — удаление текущей записи, курсор перемешается на следующую запись;

nbEdit — набор данных переводится в режим редактирования;

nbPost — в базу данных переносятся все изменения в текущей записи;

nbcancel — все изменения в текущей записи отменяются;

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

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

Нажатие любой кнопки можно эмулировать программно при помощи метода BtnClick.

В случае необходимости выполнения дополнительных действий при щелчке на любой кнопке можно воспользоваться обработчиками событий BeforeAction и Onciick, в которых параметр Button определяет нажатую кнопку. Свойства и методы компонента TDBNavigator представлены в табл. 15.6.

Таблица 15.6. Свойства и методы компонента TDBNavigator

Объявление

Тип

Описание

Свойства

property ConfirmDelete: Boolean;

Pb

Включает или отключает подтверждение удаления записи

property Hints: TStrings;

Pb

Содержит список подсказок для каждой кнопки

property Flat: Boolean;

Pb

Определяет внешний вид кнопок компонента

type TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nblnsert, nbDeiete, nbEdit, nbPost, nbCancel, nbRefresh);

TButtonSet = set of TNavigateBtn ;

property VisibleButtons: TButtonSet;

Pb

Список видимых кнопок

Методы

procedure BtnClick (Index:  TNavigateBtn) ;

Pu

Эмулирует щелчок на кнопке index

procedure SetBounds (ALeft,  ATop, AWidth, AHeight:  Integer) ; 

Pu

Задает положение (параметры ALeft, АТор) и размер компонента (параметры AWidth, AHeight)

Методы-обработчики событий

ENavClick = procedure (Sender: TObject; Button: TNavigateBtn) of object; Iproperty BeforeAction:  ENavClick; 

Pb

 Выполняется при щелчке на кнопке Button перед выполнением операции, связанной с кнопкой

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

property OnClick:  ENavClick;

Pb

Выполняется при щелчке на кнопке Button после выполнения операции, связанной с кнопкой

 


Знаете ли Вы, что в 1974 - 1980 годах профессор Стефан Маринов из г. Грац, Австрия, проделал серию экспериментов, в которых показал, что Земля движется по отношению к некоторой космической системе отсчета со скоростью 360±30 км/с, которая явно имеет какой-то абсолютный статус. Естественно, ему не давали нигде выступать и он вынужден был начать выпуск своего научного журнала "Deutsche Physik", где объяснял открытое им явление. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution