Режим форми

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

Компонент DBText дозволяє тільки переглядати вміст поля, а компоненти DBEdit і DBMеmо – переглядати і редагувати. У табл. 17.9 перераховані деякі властивості цих компонентів. Властивості перераховані в тому порядку, в якому слід встановлювати їх значення після додавання до форми додатка.

Таблиця 17.9. Властивості компонентів DBText, DBEdit і DBMеmо

Властивість

Визначає

Name Ім’я компонента. використовується для доступу до властивостей компонента
DataSource Компонент-джерело даних
DataField Поле бази даних, для відображення або редагування якого використовується компонент

Як приклад використання компонентів DBEdit і овмето розглянемо програму, яка забезпечує роботу з базою даних “Архітектурні пам’ятники Санкт-Петербурга”. Вид форми програми наведено на рис. 17.9.

Рис. 17.9. Форма додатки Архітектурні пам’ятники Санкт-Петербурга

Створюється форма наступним чином. Спочатку в порожню форму треба додати компоненти Tаblе і Datasource і встановити значення їх властивостей (табл. 17.10). Значення властивостей слід встановлювати в тому порядку, в якому вони слідують у таблиці.

Таблиця 17.10. Значення властивостей компонентів Tablel І DataSourcel

Властивість

Значення

Коментар

Tablel . DatabaseName Peterburg Ім’я користувача бази даних (Створюється утилітою BDE Administrator)
Tablel . TableName monuments . db Таблиця бази даних (створюється утилітою Database Desktop)
Tablel. Active True
DataSource1 . Dataset Tablel

Після настройки компонентів Table і Datasource в форму потрібно додати три компонента DBEdit і компонент овмето. Компоненти DBEdit призначені для перегляду і редагування полів Name, Architect і Photo, компонент овмето – для перегляду і редагування поля Note. Значення властивостей компонентів перегляду-редагування полів бази даних наведені в табл. 17.11.

Таблиця 17.11. Значення властивостей компонентів DBEdit1 -DBEdit3 і DBMemo1

Властивість

Компонент

DBEdit1 DBEdit2 DBEdit3 DBMemo1

DataSource

DataSource1 DataSource1 DataSource1 DataSource1

DataFieid

Monument Architect Photo Note

Так як значення властивості Active компонента Tаblе1 присвоєно значення True, то відразу після того, як буде присвоєно значення властивості DataFieid, в поле компонента DBEdit з’явиться вміст відповідного поля першого запису таблиці бази даних. Якщо таблиця не містить даних, поле залишається незаповненим. Якщо значення властивості Active компонента Tabiei одно False, то в поле компонента DBEdit з’являється його ім’я, значення властивості Name.
Крім компонентів перегляду-редагування полів бази даних, в форму потрібно додати компонент image, який використовується для перегляду ілюстрацій, і чотири компоненти Label для виводу пояснювального тексту. властивості Visible компонентів Image1, Label4 і DBEdit3 слід привласнити значення False.

Тепер, якщо скомпілювати і запустити програму, на екрані з’явиться форма, в полях якої буде знаходитися вміст першого запису файлу даних.

Для того щоб мати можливість переглядати інші записи файлу даних, в форму додатка потрібно додати компонент DBNavigator, значок якого знаходиться на вкладці Data Controls (рис. 17.10). Компонент DBNavigator (рис. 17.11) являє собою набір кнопок, при клацаннях на яких під час роботи програми відбувається переміщення покажчика поточного запису до наступної, попередньої, першої або останньої записи бази даних, а також додавання до файлу даних нового запису, видалення поточної записи.

Рис. 17.10. Значок компонента DBNavigator знаходиться на вкладці Data Controls

Рис. 17.11. Компонент DBNavigator

Табл. 17.12 містить опису дій, які виконуються в результаті клацання на відповідній кнопці компонента DBNavigator.
Властивості компонента DBNavigator перераховані в табл. 17.13.

Таблиця 17.12. Кнопки компонента DBNavigator

Кнопка

Позначення

Дія

До першої nbFirst Покажчик поточного запису переміщається до першого запису файлу даних
До попередньої nbPrior Покажчик поточного запису переміщається до попереднього запису файлу даних
До наступної nbNext Покажчик поточного запису переміщається до наступного запису файлу даних
До останньої nbLast Покажчик поточного запису переміщається до останнього запису файлу даних
Додати nblnsert У файл даних додається новий запис
Видалити nbDelete Видаляється поточна запис файлу даних
Редагування nbEdit Встановлює режим редагування поточної записи
Зберегти nbPost Зміни, внесені в поточний запис, записуються в файл даних
Скасувати Cancel Скасовує внесені в поточну запис зміни
Оновити nbRefresh Записує внесені зміни в файл

Таблиця 17.13. Властивості компонента DBNavigator

Властивість

Визначає

VisibleButton3 Видимі командні кнопки
Name Ім’я компонента. використовується для доступу до властивостей компонента
DataSource Ім’я компонента, viagra pas cher що є джерелом даних. Як джерело даних може виступати база даних (компонент Database), таблиця (компонент Table) або результат виконання запиту (компонент Query)

Слід звернути увагу на властивість visibieButtons. Воно дозволяє приховати деякі кнопки компонента DBNavigator і тим самим заборонити виконання відповідних операцій над файлом даних. Наприклад, присвоївши значення False властивості VisibieButtons.nbDelete можна приховати кнопку nbDelete і тим самим заборонити видалення записів.

На рис. 17.12 наведено вид форми програми Архітектурні пам’ятники Санкт-Петербурга після додавання компонента DBNavigator. Властивості DataSource компонента DBNavigator1 слід привласнити значення Table1.

Рис. 17.12. Остаточний вид форми програми Архітектурні пам’ятники Санкт-Петербурга

В принципі, після додавання в форму компонента DBNavigator найпростіша програма управління базою даних готова. Ця програма забезпечує перегляд, редагування, додавання нових і видалення непотрібних записів.
Тепер розглянемо, що треба зробити, щоб в поле imagei з’явилося зображення пам’ятника, інформація про який виведена в формі. Розроблюється, передбачає, що зображення (Фотографії) архітектурних пам’яток знаходяться в файлах в тому ж каталозі, що і таблиця бази даних. Під час додавання інформації в базу даних користувач вводить в поле Photo ім’я файлу фотографії, а під час перегляду фотографія автоматично з’являється в поле image 1.
У лістингу 17.1 наведено текст модуля програми Архітектурні пам’ятники Санкт-Петербурга.

Лістинг 17.1. База даних “Архітектурні пам’ятники Санкт-Петербурга”

unit peter_;
interface
uses
Windows, Messages, SysUtils,

Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls,

DBCtrls, Mask, Db, DBTables,
jpeg; // щоб можна було виводити JPG-ілюстрації;
type
TForml = class (TForm)
Tablel: TTable; . // база даних - таблиця
DataSourcel: TDataSource; // джерело даних для полів
// редагування-перегляду
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
DBEditl: TDBEdit;
DBEdit2: TDBEdit;
DBMemo1: TDBMemo;
Image1: ТImage;
DBEdit3: TDBEdit;
DBNavigatorl: TDBNavigator;
Label4: TLabel;
procedure TablelAfterScroll (DataSet: TDataSet);
procedure DBEdit3KeyPress (Sender: TObject; var Key: Char);
procedure DBNavigatorlClick (Sender: TObject; Button: TNavigateBtn)
procedure TablelBeforeOpen (DataSet: TDataSet);
private
{Private declarations }
public
{Public declarations}
end;
var
Forml: TForml;
BmpPath: string; // Шлях до файлів ілюстрацій. ілюстрації
// знаходяться в підкаталозі Data каталогу програми.
implementation
($ R * .DFM}
// виводить фотографію в поле Imagel
procedure ShowFoto (foto: string);
begin
try
Forml.Imagel.Picture.LoadFromFile (BmpPath + foto);
Forml.Imagel.Visible: = True;
except
on EFOpenError do
begin
MessageDlg ( 'Файл ілюстрації '+ Foto + "не знайдено.',
mtlnformation, [mbOk], 0);
end;
end;
end;
// перехід до іншого запису (Наступної, попередньої,
// першої або останньої)
procedure TForm1.TablelAfterScroll (DataSet: TDataSet);
begin.
if form1.DBEdit3.Visible then
begin
form1.DBEditS.Visible: = False;
form1.Label4.Visible: = False;
end;
if Forml.DBEditS.Text & lt; & gt; & Quot;
then ShowFoto (Form1.DBEditS.Text)
else form1.Imagel.Visible: = False;
end;
// натискання клавіші в поле фото
procedure TForml.DBEdit3KeyPress (Sender: TObject; var Key: Char);
begin
if (key = # 13) then
if Forml.DBEdit3.Text & Lt; & gt; ''
then ShowFoto (Forml.DBEdit3.Text) // показати ілюстрацію
else forml, Imagel.Visible: = False;
end;
// клацання на компоненті навігатор
procedure TForml.DBNavigatorlClick (Sender: TObject; Button:
TNavigateBtn);
begin
case Button of
nblnsert: begin
Imagel.Visible: = False; // приховати область виведення ілюстрації
DBEdit3.Visible: = True; // показати поле Фото
Label4.Visible: = True; // показати мітку Фото
end;
nbEdit: begin // редагування записи
DBEdit3.Visible: = True; // показати поле Фото
Label4.Visible: = True; // показати мітку Фото
end;
end;
end;
// перед відкриттям таблиці
procedure TForml.TablelBeforeOpen (DataSet: TDataSet);
begin
BmpPath: = ExtractFilePath (ParamStr (0)) + 'data \';
end;
end.
end.

Виклик процедури виведення фотографії (showFoto) під час перегляду бази даних виконує процедура TForm1.Table1AfterScroll, яка забезпечує обробку події AfterScrool для компонента Table1. подія AfterScrool відбувається щоразу після переходу до іншої (наступної, попередньої, першій, останній) записи таблиці як результат клацання користувача на відповідній кнопці компонента DBNavigator. Процедура TForml.Table1AfterScroll аналізує вміст поля (photo) Form1.DBEdit3.Text і, якщо воно не порожнє, що свідчить про наявність посилання на файл фотографії, виводить ілюстрацію.

При перегляді бази даних поле імені файлу ілюстрації (DBEdits) і його заголовок (Label4) на формі не відображаються. Якщо користувач натискає одну з кнопок компонента DBNavigator, то як результат обробки події onclick викликається процедура TForm1.DBNavigatorlciick, яка при натисканні кнопки Додати або Редагувати робить доступним поле DBEdits, тим самим дозволяючи користувачеві ввести або змінити ім’я файлу ілюстрації.
Процедура TForm1.DBEdit3KeyPress обробляє подія OnKeyPress для компонента DBEdits. Якщо користувач ввів в поле Edits (photo) ім’я файлу ілюстрації та натиснув клавішу “Enter” (Її код дорівнює 13), то процедура TForm1.DBEdit3KeyPress виводить ілюстрацію шляхом виклику процедури ShowFoto.