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


Автор: jorka 30.9.2009, 16:36
Здравствуйте. Задача в таблицу загрузить 20 и больше jpg файликов для отображения. Какой компонент для этого выбрать?

Автор: Данкинг 30.9.2009, 16:56
Цитата(jorka @  30.9.2009,  17:36 Найти цитируемый пост)
Задача в таблицу загрузить 20 и больше jpg файликов для отображения.

Какая связь между загрузкой и отображением?
Какая СУБД?

Цитата(jorka @  30.9.2009,  17:36 Найти цитируемый пост)
Какой компонент для этого выбрать?

Для чего?

В общем, ищи по форуму: обсуждалось неоднократно, даже я такую тему создавал, если не ошибаюсь.

Автор: Alexeis 30.9.2009, 16:58
  Например TDrawGrid из палитры Additional.

Автор: jorka 30.9.2009, 17:08
Данкинг
Пользователь перед собой должен видеть таблицу с картинками.
Картинки будут думаю в ImageList.
Искал.

Alexeis
А как туда впихнуть картинку?

Автор: Alexeis 30.9.2009, 17:23
Цитата(jorka @  30.9.2009,  16:08 Найти цитируемый пост)
А как туда впихнуть картинку? 

  Делать отрисовку в обработчике DrawCell. В нем есть все необходимое, номер ячейки, прямоугольник ячейки. Тупо в DrawGrid1.Canvas.Draw() передать объект типа JpegImage в который загружена картинка.

Автор: jorka 30.9.2009, 20:03
Alexeis

Код

     a := TJPEGImage.Create;
     a.LoadFromFile('2.jpg');
     DrawGrid1.Col:=1;
     DrawGrid1.Row:=1;
     DrawGrid1.Canvas.Draw(0,0,a);


Ошибок нету, но и картинки не видно(

Нашел код для DrawCell, но ничего интересного там не нашел.

Автор: Alexeis 30.9.2009, 20:16
Цитата(jorka @  30.9.2009,  19:03 Найти цитируемый пост)
Нашел код для DrawCell, но ничего интересного там не нашел. 

  И какой же это код?

Автор: jorka 30.9.2009, 20:27
Пример TDrawGrid Drawcell
Код

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; Col, Row: Longint;
  Rect: TRect; State: TGridDrawState);
var
  vRow, vCol: LongInt;
begin
  vRow := Row;
  vCol := Col;
  with Sender as TDrawGrid, Canvas do
  begin
    if (vRow = 0) or (vCol = 0) then
      Font.Color := clBlack
    else
      Font.Color := clRed;
    TextRect(Rect, Rect.Left, Rect.Top, Format('(%d,%d)', [vRow, vCol]));
  end;
end;

Что из этого мне нужно?

Автор: Alexeis 30.9.2009, 20:36
Цитата(jorka @  30.9.2009,  19:27 Найти цитируемый пост)

Что из этого мне нужно? 


Вот это. И еще в Draw нужно не 0, 0 ставить а Rect.Left и Rect.Top и DrawGrid1.Col:=1; DrawGrid1.Row:=1; не нужно
Цитата(jorka @  30.9.2009,  19:03 Найти цитируемый пост)
    
     a := TJPEGImage.Create;
     a.LoadFromFile('2.jpg');
     DrawGrid1.Col:=1;
     DrawGrid1.Row:=1;
     DrawGrid1.Canvas.Draw(0,0,a);


Ток я бы еще загружал картинки заранее в отдельный массив, работа с файлами операция медленная.

Автор: jorka 30.9.2009, 20:53
Чуть переделал, TextRect там думаю не нужен.
Код

procedure DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect);
  var a:TJPEGImage;
  begin
    with Sender as TDrawGrid, Canvas do
      begin
        a := TJPEGImage.Create;
        a.LoadFromFile('2.jpg');
        Canvas.Draw(Rect.Left, Rect.Top,a);
      end;
  end;

Вызываю так
Код

     DrawCell(DrawGrid1,1,1,DrawGrid1.CellRect(1,1));


Не знаю правда куда тут вставить Col и Row

Автор: Alexeis 30.9.2009, 21:14
Цитата(jorka @  30.9.2009,  19:53 Найти цитируемый пост)
DrawCell(DrawGrid1,1,1,DrawGrid1.CellRect(1,1));

  А зачем ее вызывать? Ее вызывает система сама, когда нужно перерисовать форму, причем для каждой клетки со своими параметрами. Если нужно обновить принудительно то делаешь так DrawGrid1.Invalidate

Добавлено через 1 минуту и 3 секунды
Цитата(jorka @  30.9.2009,  19:53 Найти цитируемый пост)
Не знаю правда куда тут вставить Col и Row 

  Ведь в каждой клетке своя картинка, номер столбца и строки будут определять какую картинку рисовать в текущей клетке.

Автор: jorka 30.9.2009, 22:01
Друг помог, всего-то и надо было что запихнуть картинку в ImageList и впихнуть одну строку кода в DrawCell

Код

    ImageList1.Draw(DrawGrid1.Canvas,Rect.Left,Rect.Top,index,true);


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