Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Изображение в форме


Автор: Novichek27 8.8.2010, 22:20
Приветствую всех.

Создал форму,  накидал  компоненты DBText, DBEdit. С помощью ADO подключился к базе MS Access. В одной таблице создал поле с форматом "Поле объекта OLE" задал для него файл .bmp.
Далее на форму кидаю DBImage и указываю DataSource и DataField.

Запускаю на выполнение выходит ошибка "Project Project1.exe raised exception class EInvalidGraphic with message 'Bitmap image is not valid'. Process stopped. Use Step or Run to continue.

Какой тип данных надо указать в поле таблицы? Или что прописать надо. Не получается в общем картинки из таблицы отображать на форме.

Подскажите пожалуйста как реализовать это...

Пробовал:

Image.Picture.assign(QAll.FieldByName('FieldName'));

Не выходит

Автор: Данкинг 8.8.2010, 23:14
А каким образом помещаешь картинку в Ole-поле?

Добавлено через 33 секунды
Цитата(Novichek27 @  8.8.2010,  23:20 Найти цитируемый пост)
Image.Picture.assign(QAll.FieldByName('FieldName'));

Ну да, конечно. smile

Добавлено через 9 минут и 28 секунд
Попробуй загружать картинки в таблицу программно:
Код

procedure FileToBlob(BlobField: TField; FileName: string);
var S : TStream;
    FileS : TFileStream;
begin
  S:=BlobField.DataSet.CreateBlobStream(BlobField, bmReadWrite);
  FileS:=TFileStream.Create(FileName, fmOpenRead);
  try
    S.CopyFrom(FileS, FileS.Size);
  finally
    FileS.Free;
    S.Free;
  end;
end;
...
FileToBlob(AdoTable.FieldByName('jpg'),'c:\sss.bmp');


Автор: БелАмор 10.8.2010, 00:39
Цитата(Данкинг @  8.8.2010,  23:14 Найти цитируемый пост)
procedure FileToBlob(BlobField: TField; FileName: string);
var S : TStream;
    FileS : TFileStream;
begin
  S:=BlobField.DataSet.CreateBlobStream(BlobField, bmReadWrite);
  FileS:=TFileStream.Create(FileName, fmOpenRead);
  try
    S.CopyFrom(FileS, FileS.Size);

Можно проще:
Код

procedure FileToBlob(BlobField: TField; FileName: string);
begin
  (BlobField as TBlobField).LoadFromFile(FileName);
end;

Автор: Novichek27 25.8.2010, 20:57
Спасибо.
Вроде разобрался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)