Для создания базы данных используйте утилиту Database Desktop, для создания псевдонима — SQL Explorer или BDE Administrator. Характеристики полей записей базы данных при ведены в табл. 1.1, форма программы — на рис. 1.73.

Таблица 1.1. Поля записей базы данных

Поле

Тип

Размер

Информация

Monument

А

60

Название памятника

Architect

А

40

Архитектор

Note

A

255

Краткая историческая справка

Photo

A

12

Файл иллюстрации

Рис. 1.72. Окно программы работы с базой данных "Архитектурные памятники Санкт-Петербурга"

Рис. 1.73. Форма программы работы с базой данных "Архитектурные памятники Санкт-Петербурга"

Программа работы с базой данных "Архитектурные
памятники Санкт-Петербурга".
(с) Культин Н. Б., 2003
Сначала надо создать базу данных типа STANDARD
(таблицу monuments.db), затем — псевдоним
Peterburg. Псевдоним можно создать при помощи
SQL Explorer. }
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; // источник данных для полей
// редактирования-просмотра
Labell: TLabel;
Label2: TLabel;
Label3: TLabel;
DBEditl: TDBEdit;
DBEdit2: TDBEdit;
DBMemo1: TDBMemo;
DBEdit3: TDBEdit;
Image1: TImage;
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);
procedure FormCreate(Sender: TObject);
private
I Private declarations }
public
{ Public declarations )
end;
var
Forml: TForml;
BmpPath: string; // Путь к файлам иллюстраций. Иллюстрации
// находятся в подкаталоге Data каталога
// программы.
implementation
{$R *.DFM}
procedure TForml.FormCreate(Sender: TObject);
begin
Tablel.Active := True; // открыть (таблицу) базу данных
end;
// выводит фотографию в поле 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 TForml.TablelAfterScroll(DataSet: TDataSet);
begin
if forml.DBEdit3.Visible
then
begin
forml.DBEdit3.Visible := False;
forml.Label4.Visible:=False;
...
end;
if Forml.DBEdit3.Text О "
then ShowFoto(Forml.DBEdit3.Text)
else forml.Imagel.Visible:=False;
end;
// нажатие клавиши в поле Фото
procedure TForml.DBEdit3KeyPress(Sender: TObject; var Key: Char);
begin
if (key = #13) then
if Forml.DBEdit3.Text О "
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.