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

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

По ходу спрошу, как можно уменьшить/увеличить картинку jpg, если она в TImage, уменьшить/увеличить не при отображении (делая другой размер TImage), а что-бы физически картинка стала другого размера?
...
Рейтинг: 0 / 0
DBGridEh - вывести картинки
    #39504514
Vlad_567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал один вариант, можт в нём конечно много лишнего но он заработал
только работает оооооочень медленно
тормозит на процедуре рисования - 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
DBGridEh - вывести картинки
    #39504518
Vlad_567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad_567,

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


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

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


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