вставка изображения в строковую ячейку - PullRequest
2 голосов
/ 29 марта 2012

я использую строковую сетку в моем приложении. Данные извлекаются из базы данных (бэкэнд MySQL) и отображаются в строковой сетке.

enter image description here

Я хочу вставить изображение в ячейку состояниякаждый ряд.то есть

      if status =online then -->image1
      else --->image2

кто-нибудь имеет какие-либо идеи относительно того, как это сделать?

1 Ответ

7 голосов
/ 29 марта 2012

Вам необходимо реализовать событие OnDrawCell.

Пример:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Longint;
  Rect: TRect; State: TGridDrawState);
var
  s: string;
  aCanvas: TCanvas;
begin
  if (ACol <> 1) or (ARow = 0) then
    Exit;
  s := (Sender as TStringGrid).Cells[ACol, ARow];

  // Draw ImageX.Picture.Bitmap in all Rows in Col 1
  aCanvas := (Sender as TStringGrid).Canvas;  // To avoid with statement
  // Clear current cell rect
  aCanvas.FillRect(Rect);
  // Draw the image in the cell
  if (s = 'online') then
    aCanvas.Draw(Rect.Left, Rect.Top, Image1.Picture.Bitmap)
  else 
    aCanvas.Draw(Rect.Left, Rect.Top, Image2.Picture.Bitmap);
end;
...