Ниже приведён исходник базы данных:
unit UnitPiter;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, ExtCtrls, StdCtrls, DBCtrls, Mask,jpeg;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Table1: TTable;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBMemo1: TDBMemo;
DBEdit3: TDBEdit;
Image1: TImage;
DBNavigator1: TDBNavigator;
procedure Table1AfterScroll(DataSet: TDataSet);
procedure DBEdit3KeyPress(Sender: TObject; var Key: Char);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure Table1BeforeOpen(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
BmpPath:string;
implementation
{$R *.dfm}
procedure showFoto(foto: string);
begin
try
Form1.Image1.Picture.LoadFromFile(BmpPath+foto);
Form1.Image1.Visible:= True;
except
on EFOpenError do
begin
MessageDlg('файл иллюстрации '+foto+' не найден.', mtInformation,
[mbOk], 0);
end;
end;
end;
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
if form1.DBEdit3.Visible then
begin
form1.DBEdit3.Visible :=False;
form1.Label5.Visible:=False;
end;
if Form1.DBEdit3.Text <> ''
then ShowFoto(Form1.DBEdit3.Text)
else form1.Image1.Visible:=False;
end;
procedure TForm1.DBEdit3KeyPress(Sender: TObject; var Key: Char);
begin
if (key = #13) then
if Form1.DBEdit3.Text <> ''
then ShowFoto(Form1.DBEdit3.Text)
else form1.Image1.Visible:=False;
end;
procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
case Button of
nbInsert: begin
Image1.Visible:= False;
DBEdit3.Visible:=True;
Label5.Visible:=True;
end;
end;
end;
procedure TForm1.Table1BeforeOpen(DataSet: TDataSet);
begin
BmpPath:=ExtractFilePath (ParamStr(0))+'data\';
end;
end.
Вызов процедуры вывода фотографии (showFoto) во время просмотра базы данных выполняет процедура TForm1.Table1AfterScroll, которая обеспечивает обработку события AfterScroll для компонента Table1. Событие AfterScroll происходит всякий раз после перехода к другой записи таблицы как результат щелчка пользователя на соответствующей кнопке компонента DBNavigator. Процедура TForm1.Table1AfterScroll анализирует содержимое поля (Photo ) Form1.DBEdit3.Text и, если оно не пустое, что свидетельствует о наличии ссылки на файл фотографии, выводит иллюстрацию.
При просмотре базы данных поле имени файла иллюстрации (DBEdit3) и его заголовок (Label4) на форме не отображаются. Если пользователь нажимает одну из кнопок компонента DBNavigator , то как результат обработки события OnClick вызывается процедура TForm1.DBNavigator1Click, которая при щелчке на кнопке добавить или редактировать делает доступным поле DBdit3,тем самым позволяя пользователю ввести и ли изменить имя файла иллюстрации.
Процедура TForm1.DBEdit3KeyPress обрабатывает событие On KeyPress для компонента DBEdit3. Если пользователь ввёл в поле Edit3(Photo) имя файла иллюстрации и нажал клавишу “Enter”, то процедура TForm1.DBEdit3KeyPress выводит иллюстрацию путём вызова прцедуры showFoto.

![]() |
![]() |