How to use a TImage as the background for a TDBGrid (Views: 707)
Problem/Question/Abstract: I would like to have a DBGrid on a form that contains a bitmap and have the text in the cells of the grid float on the bitmap. I've tried using SetBKMode but apparently I'm using it incorrectly. Is there a separate canvas for each cell as well as the grid itself? Answer: Place a TImage on a form or create it off-screen and put the following (untested) code in the OnDrawColumnCell event of the grid: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var w, h: Integer; begin with DBGrid1.Canvas do begin w := Rect.Right - Rect.Left; h := Rect.Bottom - Rect.Top; BitBlt(DBGrid1.Canvas.Handle, Rect.Left, Rect.Top, w, h, Image1.Picture.Bitmap.Canvas.Handle, Rect.Left, Rect.Top, SRCCOPY); Brush.Style := bsClear; TextOut(Rect.left, Rect.Top, Column.Field.AsString); end; end; |