рис. 12.2.
Рис. 12.2. Вид форми на етапі розробки
Зв'яжемо з кнопкою код, який буде виконуватися при натисканні на кнопку користувачем. Для створення процедури обробки цієї події - OnClick , перебуваючи у формі, двічі клацнемо мишею на кнопку Скасувати. У вікні Редактора коду процедурі обробки події OnClick напишемо код
Сlose;
Form1.Visible:=True;
Запустимо додаток виконання з Delphi, вибравши команду Run з меню Run (або F9). З меню Файл / Введення додатки виберемо команду Перегляд .
Вид працюючого додатку показаний на рис.12.3.
Рис. 12.3. Вид форми №3 під час виконання
Додавати записи в набір даних (і, отже, в таблицю Materialy.DB) можна прямо з компонента TDBGrid.
Для додавання запису потрібно натиснути на клавіатурі кнопку Insert або, перебуваючи на останньому записі набору даних, кнопку стрілка вниз raquo ;. Набір даних автоматично перейде в режим додавання нового запису. Після введення значень в поля запису запам'ятати запис в наборі даних можна, перейшовши на інший запис за допомогою клавіш управління курсором. Відмовитися від запам'ятовування записи можна, натиснувши кнопку Esc.
Для зміни запису випливає перемістити покажчик поточного запису в потрібне місце і змінити значення там, де це необхідно. Набір даних автоматично перейде в режим редагування.
Для видалення запису слід встановити на неї покажчик поточного запису і натиснути комбінацію кнопок Ctrl + Del.
2. Представлення змісту двох таблиць БД
Тепер роботу ускладнимо. Уявімо зміст двох таблиць БД. Причому в двох варіантах:
а) без встановлення зв'язку між таблицями на екранній формі;
б) відобразимо дані таблиці з урахуванням зв'язку між таблицями.
. 1. Відображення даних таблиць БД на екранній формі без встановлення зв'язку між ними
Покажемо, як в одній формі можна пов'язати два набори даних (батьківський і підлеглий) так, щоб у підпорядкованому наборі даних завжди показувалися записи, відповідні поточного запису в батьківському НД.
Додамо в контейнер DataModule5 компонент ТТаblе (з ім'ям Таblе2) для роботи з таблицею Prihod бази даних PRIMER (значення властивостей такі ж, як в компонента Table1, але властивість TableName посилається на ім'я таблиці Prihod.DB). Додамо в форму компонент TDataSource (ім'я за замовчуванням DataSource2). Встановимо властивість DataSet цього компонента в значення Таblе2. Розмістимо у формі №3 компонент TDBGrid (ім'я за замовчуванням DBGrid2) і встановимо його властивість DataSowce в значення DataSource2. Встановимо властивість Таbl2.Аvtive в True. Після цього відбудеться реальне зв'язування компонентів TTable з реально існуючими таблицями Materialy.DB і Prihod.DB.
Рис. 12.4. Форма з батьківським і дочірніми наборами даних під час розробки
Щоб при перегляді не можна було змінювати дані про матеріали (таблиця Materialy.DB), встановимо властивості ReadOnly компонента DBGrid1 в положення True.
Запустимо додаток виконання. Додамо кілька записів у таблицю Prihod.DB з компонента TDBGrid2. Зверніть увагу, значення поля N_Prih формується автоматично.
Рис. 12.5. У підпорядкованому наборі даних показуються записи, пов'язані з поточним записом в батьківському НД
2.2. Відображення даних таблиць БД на екранній формі з урахуванням зв'язку між ними
Нам відомо, що таблиці бази даних Materialy.DB і Prihod.DB перебувають у відношенні один-ко-многим raquo ;. Оскільки ми визначили посилальну цілісність між цими таблицями, можна зробити так, щоб при установці покажчика на запис в наборі даних Table1 (асоційованому з Materialy.DB) в наборі даних Таblе2 (асоційованому з Prihod.DB) показувалися тільки записи приходу поточного матеріалу в Table1. Це реалізується через механізм зв'язку наборів даних Master-Detail.
У інспекторі об'єктів для компонента Таblе2 встановимо значення властивості Master Source в DataSource1. Перемістимося на значення властивості Master Fields і натиснемо кнопку. У вікні Field Link Designer встановимо параметри ...