Изображение в ячейке DBGrid
Поместим на форму два компонента TImage и загрузим в них изображения, которые хотим поместить в ячейки таблицы. Высота изображений не должна превышать высоту ячейки/строки DBGrid.
Далее в обработчике событий OnDrawColumnCell компонента DBGrid запишем следующий код:
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 |
procedure Form1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var bmpImage: tBitmap; intX, intY: Integer; begin if DataSource1.DataSet.RecNo > 0 then begin if column.FieldName = 'Picture' then with DBGrid1.Canvas do begin fillRect(rect); bmpImage := tBitmap.Create; try if DBGrid1.DataSource.DataSet.FieldByName('Picture').AsString = '1' then bmpImage.Assign(image1.Picture.Bitmap); if DBGrid1.DataSource.DataSet.FieldByName('Picture').AsString = '2' then bmpImage.Assign(image2.Picture.Bitmap); intX := ((rect.Right - rect.Left) div 2) - (bmpImage.Width div 2); intY := ((rect.Bottom - rect.Top) div 2) - (bmpImage.Height div 2); draw(rect.Left + intX, rect.Top + intY, bmpImage); finally bmpimage.Free; end; end; end; end; |