Просмотр базы данных. Режим формы.
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 <> " 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 <>'' 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.