Начитавшись интернетов, пытался двумя способами отобразить картинку из BLOB поля базы данных в ячейку DBGrid:
- Код: Выделить всё
procedure TPDreestrForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Pic: TBitmap;
bs: TStream;
Field: TBlobField;
begin
Pic:=TBitmap.Create;
if Column.FieldName='patentimage' then begin
Field:=DBGrid1.DataSource.DataSet.FieldByName('patentimage') as TBlobField;
Pic.Assign(TBitmap(Field)); // первый вариант
{bs:=DM1.DspatentTable.CreateBlobStream(DM1.DspatentTablepatentimage,bmRead);
Pic.LoadFromStream(bs);} // второй вариант
DBGrid1.Canvas.Draw(Rect.Left,Rect.Top,Pic);
//bs.Free;
end;
Pic.Free;
end;
Крашится все на этапе передачи TBlobField в Pic. Ошибки типа "Cannot assign TBlobField to TBitmap'....
Помогите, пожалуйста, кто делал уже))
Добавлено спустя 19 часов 14 минут 31 секунду:
Пока никакого прогресса
TBlobField не поддерживает метод SaveToStream
Метод SaveToFile поддерживает, но формат, в котортый он сохраняет, не открывается компонентами TImage (((((