Для того щоб забезпечити перегляд бази даних в режимі форми, в форму додатка потрібно додати компоненти, забезпечують перегляд і, якщо потрібно, редагування вмісту полів записи, причому по одному компоненту для кожного поля.
Компонент 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
Таблиця 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.