Загрузка картинок в DrawGrid

Появилась такая проблема. Необходимо загрузить картинку в выбранную ячейчку компонента DrawGrid. Все что не искал, везде про StringGrid, а такие способы не подходят(пробую таким способом, выводит в ячейку 0,0...
procedure TDrwGrdForm.DrawGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
    if ((Acol = SCol) and (Arow = SRow)) then
      begin
        DrawGrid1.Canvas.Draw(0,0,Bimage);
      end
    else;
 
end;
SCol и SRow передается из процедуры выделения ячейки.
3 ответа

Что в DrawGrid что в StrihnGrid разницы нет. У тебя только одна ошибка, выводишь по координатам 0, 0. Для каждой ячейки передаётся её Rect, вот и выводи в Rect.Left, Rect.Top.


Что в DrawGrid что в StrihnGrid разницы нет. У тебя только одна ошибка, выводишь по координатам 0, 0. Для каждой ячейки передаётся её Rect, вот и выводи в Rect.Left, Rect.Top.
с добавлением разобрался)но картинка пропадает при клике на другую ячейчку. Каким образом можно запомнить изображение именно в той ячейке куда оно было загружено?
procedure TDrwGrdForm.DrawGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
 
begin
  if cod then
    begin
      if ((DrawGrid1.Col = SCol) and (DrawGrid1.Row = SRow)) then
       begin
        DrawGrid1.Canvas.StretchDraw(Rect,Bimage);
        cod := false;
       end
      else;
    end;
 
end;
получилась такая процедура на добавление. все работает хорошо. только что надо добавить чтобы изображение оставалось при клике на другую ячейку?


Тут могут быть разные решения. Можно при старте создать 2-мерный массив размерностью равный гриду и заполнить, к примеру $FF или False что удобнее. При наличии картинки в ячейке, менять значение в массиве и в процедуре отрисовки проверять массив. Отрисовываем те ячейки, которые разрешены в массиве. Можно создать массив битмапов и заполнять по мере необходимости и также проверять, если битмап присутствует рисуем, иначе пропускаем.