ProcedureTablelBeforeOpen(DataSet: TDataSet); private

{ Private declarations }public

{ Public declarations }end;

var

Forml: TForml;

BmpPath: string;// Шлях до файлів ілюстрацій. Ілюстрації

// знаходяться в підкаталозі Data каталога програми.

Implementation

($R *.DFM}

// виводить фотографію в полі Imagel
procedureShowFoto(foto: string);
begin
try

Forml.Imagel.Picture.LoadFromFile(BmpPath+foto);
Forml.Imagel.Visible:=True;
except

OnEFOpenError dobegin

MessageDlg('Файл ілюстрації '+foto+' не знайдений.',

mtlnformation, [mbOk], 0) ;
end;
end;
end;

// перехід до іншого запису (наступною, попередньою,
// першою або останньою)

ProcedureTForm1.TablelAfterScroll(DataSet: TDataSet); begin.

if form1.DBEdit3.Visible then
begin

form1.DBEditS.Visible := False;
form1.Label4.Visible:=False;
end;
ifForml.DBEditS.Text <> "

thenShowFoto(Form1.DBEditS.Text)
elseform1.Imagel.Visible:=False;
end;

// натиснення клавіші в полі Фото

ProcedureTForml.DBEdit3KeyPress(Sender: TObject; varKey: Char); begin

if (key = #13) then

ifForml.DBEdit3.Text <>''

thenShowFoto(Forml.DBEdit3.Text) // показати ілюстрацію
elseforml,Imagel.Visible:=False;
end;

// клацання на компоненті Навігатор

procedureTForml.DBNavigatorlClick(Sender: TObject; Button:
TNavigateBtn);

Begin

CaseButton of nblnsert: begin

Imagel.Visible:=False;// приховати область виведення ілюстрації
DBEdit3.Visible:=True; // показати поле Фото
Label4.Visible:=True; // показати мітку Фото
end;
nbEdit: begin// редагування запису

DBEdit3.Visible:=True; // показати поле Фото
Label4.Visible:=True; // показати мітку Фото
end;

end;

end;

// перед відкриттям таблиці

procedureTForml.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.

 

 

Режим таблиці

Програма роботи з базою даних "Архітектурні пам'ятники Санкт-Петербурга" виводить інформацію в режимі форми, в кожен момент часу користувач може бачити тільки одну запис. Такий режим роботи з базою даних не завжди зручний. Якщо необхідно бачити одночасно декілька записів бази даних, то потрібно забезпечити проглядання даних в режимі таблиці.

Процес створення додатку, що забезпечує проглядання бази даних в режимі таблиці, розглянемо на прикладі програми роботи з базою даних "Школа".

Хай база даних "Школа" (псевдонім школа), є таблицею, яка знаходиться у файлі School.db. Записи таблиці school складаються з полів: Name (Ім'я), Fam (Прізвище), class (Клас), Adr (Адреса) і N (Особистий номер). Поля Name, Fam, class і Adr є полями символьного типу (тип А), а поле N — числове, з автозбільшенням.

Примітка

Псевдонім Школа слід створити за допомогою BDE Administrator, а таблицю (файл school.db) — за допомогою Database Desktop.

Спочатку у форму застосування, що розробляється, потрібно додати компоненти Table і DataSource, які забезпечують доступ до файлу даних, і встановити значення їх властивостей (табл.14).

Таблиця 14. Значення властивостей компонентів Table1 і DataSource1

       
  Властивість Значення  
  Tablel . DatabaseName Tablel . TableName Tablel. Active DataSourcel . Dataset Школа school . db True Tablel  
       

Для забезпечення перегляду і редагування даних в режимі таблиці у форму додатку треба додати компонент DBGrid, значок якого знаходиться на вкладці Data Controls(мал. 13). Вид форми застосування, що розробляється, після додавання компоненту DBGrid приведений на мал.14.

Мал. 13. Значек компоненту DBGrid

Мал.14. Форма додатку після додавання компоненту DBGrid

Компонент DBGrid забезпечує представлення бази даних у вигляді таблиці. Властивості компоненту DBGridl визначають вид таблиці і дії, які можуть бути виконані над даними під час роботи програми. У табл. 17.15 перераховані деякі властивості компоненту DBGrid.

Таблиця 15. Властивості компоненту DBGrid

       
  Властивість Визначає  
  Name Ім'я компоненту  
  DataSource Джерело що відображаються в таблиці даних  
  Columns Інформацію, що відображається в таблиці  
  Options . dgTitles Вирішує виведення рядка заголовка стовпців  
  Options . dgIndicator Вирішує виведення колонки індикатора. Під час роботи з базою даних поточний запис позначається в колонці індикатора трикутником, новий запис — зірочкою, редагована — спеціальним значком  
  Options . dgColumnResize Дозволяє міняти під час роботи програми ширину колонок таблиці  
  Options . dgColLines Дозволяє виводити лінії, що розділяють колонки таблиці  
  Options . dgRowLines Дозволяє виводити лінії, що розділяють рядки таблиці  
       

Для того, щоб задати, яка інформація буде відображена в таблиці під час роботи програми, потрібно спочатку визначити джерело даних для таблиці (встановити значення властивості DataSource), потім — встановити значення уточнюючих параметрів властивості Columns. Значення властивості DataSource задається звичайним способом, тобто у вікні Object Inspector. Щобвстановити значення властивості Columns, треба у вікні Object Inspector вибратицю властивість і клацнути на кнопці з трьома крапками. В результаті відкривається вікно редактора колонок (мал. 15).

Мал. 15. Редактор колонок

Для того, щоб в компонент DBGrid додати колонку, що забезпечує проглядання вмісту поля запису файлу даних, необхідно натиснути кнопку Add New, що знаходиться на панелі інструментів у верхній частині вікна (це єдина доступна після запуску редактора кнопка), виділити доданий елемент і, використовуючи Object Inspector,встановити значення властивостей цієї колонки (табл. 17.16). Властивістю columns компоненту DBGrid є масив компонентів типу TCoiumn. Кожній колонці відповідає елемент масиву. Встановлюючи значення властивостей компонентів column, програміст задає вид колонок компоненту DBGrid, тим самим визначає вид всієї таблиці.

Таблиця 16. Властивості компоненту column

       
  Властивість Визначає  
  FieldName Поле запису, вміст якого виводиться в колонці  
  Width Ширину колонки в пикселах  
  Font Шрифт, використовуваний для виведення тексту в осередках колонки  
  Color Колір фону колонки  
  Alignment Спосіб вирівнювання тексту в осередках колонки. Текст може бути вирівняний по лівому краю (taLeftJustify), по центру (taCenter) або по правому краю (taRight Justify)  
  Title. Caption Заголовок колонки. Значенням за умовчанням є ім'я поля запису  
  Title .Alignment Спосіб вирівнювання заголовка колонки. Заголовок може бути вирівняний по лівому краю (taLeftJustify), по центру (taCenter) або по правому краю (taRight Justify)  
  Title. Color Колір фону заголовка колонки  
  Title. Font Шрифт заголовка колонки  
       

У простому випадку для кожної колонки досить встановити значення властивості FieldName, яка визначає ім'я поля запису, вміст якого відображатиметься в колонці, а також значення властивості Title.Caption, що визначає заголовок колонки. У табл. 17 приведені значення властивостей columns компоненту DBGridl.

Таблиця 17. Значення властивостей компоненту DBGridl

         
  Компонент FieldName Title . Caption  
  DBGrid1. Columns [0] DBGrid1. Columns [1] Fam Name Прізвище Ім'я  
         
         
  DBGrid1. Columns [2] DBGrid1 . Columns [ 3 ] Class Adr Клас Адреса, телефон  
         
             

Останнє, що треба зробити — додати до форми компонент DBNavigator, набудувавши його на роботу з таблицею-джерелом даних (властивості DataSource Потрібно Привласнити значення Table1).

Остаточний вид форми додатку приведений на мал. 17.16.

Мал. 16. Форма після настройки компоненту DBGrid1

Після цього програму можна відкомпілювати і запустити. Слід звернути увагу, що для того, щоб після запуску програми у вікні з'явилася інформація або, якщо база даних порожня, можна було вводити нову інформацію, властивість Active таблиці-джерела даних повинна мати значення True.

Робота з базою даних, представленою у вигляді таблиці, багато в чому схожа на роботу з електронною таблицею Microsoft Excel. Використовуючи клавіші переміщення курсора вгору і вниз, а також клавіші перегортання тексту сторінками (<Page Up> і <Page Down>), можна, переміщаючись від рядка до рядка, проглядати записи бази даних. Натиснувши клавішу <Ins>, можна додати запис, а натиснувши клавішу <Del> — видалити запис. Для того, щоб внести зміни в полі запису, потрібно, використовуючи клавіші переміщення курсора вліво і управо, вибрати необхідне поле і натиснути клавішу <F2>.

 

Запити