Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGridEh - вывести картинки / 9 сообщений из 9, страница 1 из 1
13.08.2017, 03:55:35
    #39504508
Vlad_567
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Добрый день
Подскажите, как из blob поля вывести картинку в колонку DBGridEh.
Картинки в blob-ах есть jpg-ги, есть bmp-ки, и еще разного размера.
Картинки нужно вывести именно в колонке самой таблицы, а не в отдельном компоненте типа DBImage.
Расширение картинки можно вытащить, он есть в таблице.

Знаю что выводить нужно в DrawColumnCell, но не знаю как в нём вывести уже саму картинку.
...
Рейтинг: 0 / 0
13.08.2017, 06:40:06
    #39504511
Vlad_567
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Vlad_567,

По ходу спрошу, как можно уменьшить/увеличить картинку jpg, если она в TImage, уменьшить/увеличить не при отображении (делая другой размер TImage), а что-бы физически картинка стала другого размера?
...
Рейтинг: 0 / 0
13.08.2017, 08:44:16
    #39504514
Vlad_567
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Сделал один вариант, можт в нём конечно много лишнего но он заработал
только работает оооооочень медленно
тормозит на процедуре рисования - DBGridEh1.Canvas.StretchDraw

Может есть еще какие-нибудь варианты?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var Stream:TMemoryStream;
Image1:TImage;
Bitmap: TBitmap;
w,h, w1,h1:integer;
wsc,hsc:real;
begin
   if (Column.FieldName = 'b') and (MemTableEh1.FieldByName('name').AsString='jpg') then
   begin
     Stream:=TMemoryStream.Create;
     TBlobField(MemTableEh1.FieldByName('b')).SaveToStream(Stream);
     Image1 := TImage.Create(nil);
     Image1.Picture.Graphic := TJPEGImage.Create;
     Stream.Seek(0, soFromBeginning);
     Image1.Picture.Graphic.LoadFromStream(Stream);
     h:=Image1.Picture.Graphic.Height;
     w:=Image1.Picture.Graphic.Width;
     h1:=Rect.Height;
     w1:=Rect.Width;
     if (W>W1) or (h>h1) then
     begin
       wsc:=W/W1;
       hsc:=h/h1;
       if wsc>hsc then
       begin
         Rect.Height:=trunc(h/wsc);
       end
       else
       begin
         Rect.Width:=trunc(w/hsc);
       end;
     end
     else
     begin
     end;
     DBGridEh1.Canvas.StretchDraw(Rect,Image1.Picture.Graphic); //Работает, но сильно тормозит
     //DBGridEh1.Canvas.Draw(Rect.left, Rect.Top,Image1.Picture.Graphic); //Работает
   end;
   if (Column.FieldName = 'b') and (MemTableEh1.FieldByName('name').AsString='bmp') then
   begin


     Stream:=TMemoryStream.Create;
     TBlobField(MemTableEh1.FieldByName('b')).SaveToStream(Stream);
     Bitmap:=TBitmap.Create;
     Stream.Seek(0, soFromBeginning);
     Bitmap.LoadFromStream(Stream);
     Image1 := TImage.Create(nil);
     Image1.Picture:=nil;
     Stream.Position:=0;
     Image1.Picture.Bitmap.LoadFromStream(Stream);
//     Image1.Picture.Bitmap:=Bitmap;

     h:=Image1.Picture.Graphic.Height;
     w:=Image1.Picture.Graphic.Width;
     h1:=Rect.Height;
     w1:=Rect.Width;
     if (W>W1) or (h>h1) then
     begin
       wsc:=W/W1;
       hsc:=h/h1;
       if wsc>hsc then
       begin
         Rect.Height:=trunc(h/wsc);
       end
       else
       begin
         Rect.Width:=trunc(w/hsc);
       end;
     end
     else
     begin
     end;
     DBGridEh1.Canvas.StretchDraw(Rect,Image1.Picture.Graphic); //Работает
   end;
end;



Модератор: Как мне оформить свое сообщение?
...
Рейтинг: 0 / 0
13.08.2017, 08:47:47
    #39504518
Vlad_567
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Vlad_567,

Тормозит на картинках - маленьких (4 картинки по 10-70 кБайт)
и в таблице высота строк не большая, всего 50 пикселов.
...
Рейтинг: 0 / 0
14.08.2017, 10:32:47
    #39504813
Uridian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Vlad_567Может есть еще какие-нибудь варианты?
Для отображения картинок непосредственно в самой таблице можно создать колонку TcxGridDBColumn, связать с нужным блоб-полем через DataBinding, и установить свойства (в дизайн-тайме):
Код: pascal
1.
2.
Properties := Image;
Properties.GraphicClassName := TdxSmartImage;


Способ "вписывания" картинки в ячейку Properties.FitMode;
Расширения файлов указывать нигде не нужно, компонент умеет "понимать" тип картинки, исходя из внутренней информации.
Автоматический подбор высоты ячеек TcxGridDBTableView.OptionsView.CellAutoHeight.
...
Рейтинг: 0 / 0
14.08.2017, 10:42:03
    #39504818
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Ничего что человек просил для Ehilb, а вы ему для cxGrid дали решение? :)
...
Рейтинг: 0 / 0
14.08.2017, 12:25:59
    #39504896
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Vlad_567только работает оооооочень медленно
тормозит на процедуре рисования - DBGridEh1.Canvas.StretchDraw
С чего ты взял, что именно на отрисовке тормозит?
И еще, у тебя код - сплошная утечка памяти.
...
Рейтинг: 0 / 0
14.08.2017, 18:26:25
    #39505212
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
Vlad_567,

помнится, на 4.х версии был встроенный механизм отображения картинок (ЕМНИП, только jpg и bmp). Можно и нестандартным способом типа этого
...
Рейтинг: 0 / 0
14.08.2017, 19:39:28
    #39505267
Dunkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh - вывести картинки
У TDBGridEh есть published свойства DrawMemoText и DrawGraphicData. Ещё, скорее всего, в IncludeImageModules надо добавить iimJpegImageModuleEh.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGridEh - вывести картинки / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]