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>.
Запити