Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.04;
Скачать: CL | DM;

Вниз

DBGridEh и отображение содержимого BLOB поля   Найти похожие ветки 

 
ixen   (2011-05-13 10:52) [0]

Здравствуйте! СУБД Firebird. Отображение данных DBGridEh. Таблица с полем BLOB хранящая в себе изображения JPG. Отобразить эти изображения на форме через Image проблем не вызывало. Может ли DBGridEh без обработки OnDrawColumnCell отображать эти изображение в соответствующей колонке?


 
OW ©   (2011-05-13 11:23) [1]

Columns.ImageList


 
OW ©   (2011-05-13 11:27) [2]

или не понимаю чего хочешь :)


 
ixen   (2011-05-13 11:30) [3]

нет... это не то... изображения хранятся не в ImageList, а в поле таблицы... вот эти изображения и хотелось бы вывести в ячейку грида.


 
ixen   (2011-05-13 11:32) [4]

вобщем я передумал так делать... картинки весят много, и грид будет тормозить... сделаю по другом.. всем спасибо..


 
Anatoly Podgoretsky ©   (2011-05-13 14:26) [5]

Ага размером 2584*1560, ну а вторую причину ты сам указал.


 
ixen   (2011-05-20 10:10) [6]

Все таки я сделал отображение картинок в гриде, содержащиеся в BLOB поле. При этом грид не тормозит как предполагалось, хотя фотографии грузил достаточно тяжелые с большим разрешением. Код оказался достаточно простым. Вот мое решение:

uses JPeg;
var pic:Tgraphic;

procedure TFfotos.FormCreate(Sender: TObject);
begin
   pic:=Tjpegimage.Create;
   TJPEGImage(pic).Scale:=jsEighth;// уменьшаем картинку в 8 раз
   TJPEGImage(pic).Performance:=jpBestSpeed; // уменьшаем цветопередачу и увеличиваем скорость отрисовки
end;

procedure TFfotos.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     pic.Free;
end;

procedure TFfotos.fotos_grdDrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumnEh;  State: TGridDrawState);
var Field: TBlobField;
begin
   field:=TDBGridEh(sender).DataSource.DataSet.FieldByName("foto") as TBlobField;
   pic.Assign(Field);
   TJPEGImage(Pic).DIBNeeded; // оптимизируем перед отрисовкой
   TDBGridEh(sender).Canvas.Draw(Rect.Left,Rect.Top,pic); // рисуем в гриде
end;

Использовал DBGridEh, если включить поддержку изменения высоты строк, то вообще красота получается. Пользователь сам может выбрать высоту строки чтобы помещалась вся фотография.


 
Плохиш ©   (2011-05-20 11:31) [7]


> ixen   (20.05.11 10:10) [6]
>
> Все таки я сделал отображение картинок в гриде, содержащиеся
> в BLOB поле.

Молодец.

PS. Сделай pic полем формы и объяви с типом Tjpegimage.



Страницы: 1 вся ветка

Текущий архив: 2011.09.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
1-1265825105
Дмитрий Белькевич
2010-02-10 21:05
2011.09.04
Особенность создания компонентных врапперов OLE


2-1305694815
samalex2504
2011-05-18 09:00
2011.09.04
Ошибка конвертирования данных из Excel в тип Data


2-1305708984
test2
2011-05-18 12:56
2011.09.04
округление


2-1305938346
Drowsy
2011-05-21 04:39
2011.09.04
В какой системной таблице Firebird2.5


8-1215855784
AlexanderMS
2008-07-12 13:43
2011.09.04
Программа вылетает на команде IGraphBuilder.RenderFile