Редагування та навігація по записах набору даних використовуючи компонент TDBNavigator

Переміщення, або навігація по записах набору даних, може здійснюватися кількома шляхами. Наприклад, в компонентах TDBGrid та TDBCtrlGrid, які відображають відразу кілька записів, можна використовувати клавіші вертикального переміщення курсору або вертикальну смугу прокрутки. Але що робити, якщо на формі знаходяться компоненти, що відображають одне поле тільки поточного запису набору даних (TDBEdit, TDBMemo, TDBComboBox та інші)? Очевидно, що в такому випадку на формі повинні бути розміщені додаткові елементи управління, що відповідають за переміщення по записах.

Навігація та редагування набору даниз використовуючи компонент TDBNavigator

Для вирішення зазначених завдань і призначений delphi-компонент TDBNavigator, який являє собою сукупність керуючих кнопок, які реалізують операції навігації по набору даних, а також, модифікації та видалення записів цілком.

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

За замовчуванням компонент містить десять кнопок управління, проте, за бажанням, можна відмовитися від показу непотрібних елементів. Для цього слід відповідним чином налаштувати значення властивості VisibleButtons типу TButtonSet.

type TButtonSet = set of TNavigateBtn;
type
TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);

Тобто, якщо ми не хочемо надавати користувачеві можливість видаляти записи з таблиці бази даних, то, скориставшись вказаною вище властивістю, необхідно сховати кнопку nbDelete. Відмітимо, що зробити це можна програмно або в інспекторі об'єктів. Покажемо, яким чином це реалізується програмно. Для цього, скориставшись delphi-проектом, який ми створювали при розгляді таблиці TDBGrid, доповнимо головну форму компонентом типу TDBNavigator. На наступному кроці, для властивості DataSource навігатора DBNavigator1, присвоїмо значення DataSource1.

tdbnavigator_komponent21

Підключення компонента Navigator1 до набору даних Table1

Після цього, на подію OnCreate головної форми проекту, запишемо наступний програмний код:

procedure TForm1.FormCreate(Sender: TObject);
begin
// Скриваємо кнопку nbDelete в компоненті DBNavigator1
DBNavigator1.VisibleButtons:=DBNavigator1.VisibleButtons-[nbDelete];
end;

Запустивши проект на виконання, отримаємо форму наступного вигляду:

tdbnavigator_komponent31

Скриваємо кнопку nbDelete в компоненті типу TDBNavigator

Зазначимо, що у тому випадку, коли кнопка nbDelete є видимою, то, задля запобігання випадкового видалення записів з таблиці бази даних, в компоненті TDBNavigator передбачено вивід діалогового вікна, в якому користувач повинен підтвердити або скасувати видалення поточного запису. Появою вікна підтвердження управляє властивість ConfirmDelete типу Boolean, яка, за замовчуванням, приймає значення True. Тобто, вікно підтвердження виводиться. Якщо при налагодженні програми встановити цю властивість в значення False, то запис буде видалятися без запиту підтвердження.

Хоча кнопки управління навігатора TDBNavigator інтуїтивно зрозумілі, є можливість забезпечити кожну з них спливаючою підказкою. Реалізується це за допомогою властивості ShowHint типу Boolean (за замовчуванням, приймає значення False, тобто підказки не відображаються). Відмітимо, що стандартний шаблон списку підказок містить текст англійською мовою, проте, скориставшись властивістю Hints типу TString, його можна замінити на будь-який інший.

Зауваження: при заповненні властивості Hints даними послідовність рядків потрібно дотримувати в тому порядку, в якому розміщені кнопки компонента TDBNavigator. Тобто перший рядок підказки відповідає кнопці «Перейти до першого запису», другий — «Перейти до попереднього запису»,..., останній — «Оновити інформацію в наборі даних» . В іншому випадку, підказки переплутаються.

Завершуючи розгляд основних моментів пов'язаних з навігатором TDBNavigator, хотілося б звернути увагу на дві специфічних події, визначених для delphi-компонентів такого типу. Це подія BeforeAction та подія OnClick типу ENavClick.

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

Перша з них виникає після натискання на кнопку Button елемента типу TDBNavigator, але до виконання операції, пов'язаної з цією кнопкою (зазвичай використовується для запиту користувача підтвердження на виконання операції, що призводить до зміни даних) і друга — після натискання на кнопку Button і після виконання операцій, пов'язаних з цією кнопкою.

Скачати delphi-проект Редагування та навігація по записах набору даних використовуючи компонент TDBNavigator.

Матеріал був корисним, поділись в соціальних мережах:

Якщо тобі сподобалась дана тема, залиш свій коментар