Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2017, 15:55   #1
mishadf
 
Регистрация: 28.06.2016
Сообщений: 3
По умолчанию Отображение изображений из базы данных

Добрый день нужна помощь в отображение изображений из базы данных Access. Я смог только 1 изображение вывести с помощь события AfterScroll, но есть необходимость выводить их больше

Добавление фото в базу провожу с помощю

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  jpg: TJPEGImage;
begin
  if OpenPictureDialog1.Execute then
  begin
    jpg := TJPEGImage.Create;
    try
      jpg.LoadFromFile(OpenPictureDialog1.FileName);
      ADOQuery1.Edit;
      ADOQuery1.FieldByName('Image1').Assign(jpg);
      ADOQuery1.Post;
    finally
      jpg.Free;
    end;
  end;
 
  ADOQuery1AfterScroll(ADOQuery1);
end;

А само отображение

Код:
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
var
  jpg: TJPEGImage;
begin
  if not ADOQuery1.FieldByName('Image1').IsNull then
  begin
    jpg := TJPEGImage.Create;
    try
      jpg.Assign(ADOQuery1.FieldByName('Image1'));
      Image1.Picture.Assign(jpg);
    finally
      jpg.Free;
    end;
  end else
    Image1.Picture := nil;
end;

Надеюсь сможете подсказать как дополнить код для нескольких фото, желательно пример как это сделать
mishadf вне форума Ответить с цитированием
Старый 15.01.2017, 22:29   #2
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Есть такой компонент - DBImage...
kropotkina-alice вне форума Ответить с цитированием
Старый 15.01.2017, 23:11   #3
mishadf
 
Регистрация: 28.06.2016
Сообщений: 3
По умолчанию

а как в нём вывести jpg изображение?
mishadf вне форума Ответить с цитированием
Старый 16.01.2017, 04:38   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Есть такой компонент - DBImage...
Который отображаеть только .bmp и НЕ .jpg
Цитата:
Сообщение от mishadf Посмотреть сообщение
но есть необходимость выводить их больше
У вась таблице в поле 'Image1' есть картинки форматов .jpg который можно отображать компоненте Image так
Код:
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
var
  S: TStream;
  jpg: TJPEGImage;
begin
  if not ADOQuery1.FieldByName('Image1').IsNull then
  begin
    S := ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName('Image1'), bmRead);
    jpg := TJPEGImage.Create;
    try
      S.Position := 0;
      jpg.Assign(ADOQuery1.FieldByName('Image1'));
      Image1.Picture.Assign(jpg);
    finally
      jpg.Free;
      S.Free;
    end;
  end else
    Image1.Picture := nil;
end;
Вопрос: что значить "больше" ? имеется в виду размер или что ?

Последний раз редактировалось xxbesoxx; 16.01.2017 в 05:00.
xxbesoxx вне форума Ответить с цитированием
Старый 17.01.2017, 08:15   #5
mishadf
 
Регистрация: 28.06.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Который отображаеть только .bmp и НЕ .jpg


Вопрос: что значить "больше" ? имеется в виду размер или что ?
Больше картинок, есть ещё поля Image2, Image3 например
mishadf вне форума Ответить с цитированием
Старый 17.01.2017, 11:00   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от mishadf Посмотреть сообщение
Больше картинок, есть ещё поля Image2, Image3 например
не понял. так что Вам мешает использовать ваш же подход:

Код:
  if not ADOQuery1.FieldByName('Image2').IsNull then
  begin
      ......
      jpg.Assign(ADOQuery1.FieldByName('Image2'));
      Image2.Picture.Assign(jpg);
     .....

  if not ADOQuery1.FieldByName('Image3').IsNull then
  begin
      ......
      jpg.Assign(ADOQuery1.FieldByName('Image3'));
      Image3.Picture.Assign(jpg);
     .....
ну, и чтобы не плодить одинаковый код, его разумно вынести в отдельный метод...
передавать в него имя поля и имя контрола TImage на форме, куда надо вывести картинку...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.01.2017, 11:14   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Включил датчик телепатии. Подозреваю, что в каждой записи одна картинка. Вводит то одну. А вывести хочет картинки из кучи записей сразу, что-то типа плитки. Тогда в цикле по датасету и выводи, а не в AfterScroll
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос из базы данных и отображение в таблице dont_worry JavaScript, Ajax 3 19.10.2016 17:12
отображение данных в TDBGrid из базы Постгрес maxfox123 SQL, базы данных 6 05.02.2015 08:05
Отображение данных из базы SQL в MFC ComboBox al072 C/C++ Базы данных 0 06.05.2012 19:14
Вывод изображений из базы данных Princesse PHP 5 12.01.2010 10:09
Отображение информации из базы данных (Delphi) flame33 Помощь студентам 6 13.12.2009 21:24