Проект хранится в папке C:\Project\
Изображения хранятся в папке C:\Project\Images
Есть база с текстовым полем "Foto" в котором хранятся имена файлов фотографий сотрудников в виде "Images\foto1.jpg"
На форме есть компонент "Image" и "DBNavigator".
На OnClick по навигатору стоит обработчик, который обновляет изображение в компоненте "Image" таким образом:
Image.Picture.LoadFromFile(DataModule1.ADOTable.FieldValues['Foto']);
Если просто перемещаться по таблице используя навигатор, то все отображается нормально.
Есть на форме кнопка, которая добавляет новое фото:
procedure TForm.ButtonClick(Sender: TObject);
begin
if OpenPictureDialog.Execute
then
begin
DataModule1.ADOTable.Edit;
DataModule1.ADOTable.FieldValues['Foto'] := OpenPictureDialog.FileName;
DataModule1.ADOTable.Post;
Image_Foto.Picture.LoadFromFile(OpenPictureDialog.FileName);
end;
end;
Т.е. новая картинка добавляется в базу и отображается в "Image" нормально.
НО!!! Если после добавления картинки нажать на навигатор, он переходит на следующую запись в таблице, в которой в поле "Foto" стоит "\Images\foto1.jpg". По идее картинка в "Image" должна обновится, однако выскакивает ошибка:
Project Project.exe raised exception class EFOpenError with message 'Cannot open file "C:\Project\Images\Images\foto1.jpg. Process stopped. Use Step or Run to continue.
Вопрос: откуда в пути взялось "C:\Project\Images", ведь значение пути берется из ячейки, в которой есть только "Images\foto1.jpg".
Изображения хранятся в папке C:\Project\Images
Есть база с текстовым полем "Foto" в котором хранятся имена файлов фотографий сотрудников в виде "Images\foto1.jpg"
На форме есть компонент "Image" и "DBNavigator".
На OnClick по навигатору стоит обработчик, который обновляет изображение в компоненте "Image" таким образом:
Image.Picture.LoadFromFile(DataModule1.ADOTable.FieldValues['Foto']);
Если просто перемещаться по таблице используя навигатор, то все отображается нормально.
Есть на форме кнопка, которая добавляет новое фото:
procedure TForm.ButtonClick(Sender: TObject);
begin
if OpenPictureDialog.Execute
then
begin
DataModule1.ADOTable.Edit;
DataModule1.ADOTable.FieldValues['Foto'] := OpenPictureDialog.FileName;
DataModule1.ADOTable.Post;
Image_Foto.Picture.LoadFromFile(OpenPictureDialog.FileName);
end;
end;
Т.е. новая картинка добавляется в базу и отображается в "Image" нормально.
НО!!! Если после добавления картинки нажать на навигатор, он переходит на следующую запись в таблице, в которой в поле "Foto" стоит "\Images\foto1.jpg". По идее картинка в "Image" должна обновится, однако выскакивает ошибка:
Project Project.exe raised exception class EFOpenError with message 'Cannot open file "C:\Project\Images\Images\foto1.jpg. Process stopped. Use Step or Run to continue.
Вопрос: откуда в пути взялось "C:\Project\Images", ведь значение пути берется из ячейки, в которой есть только "Images\foto1.jpg".