德尔福StringGrid与背景中的图片

col*_*lin 3 delphi image tstringgrid

嗨,有没有人知道是否可以将图片显示为字符串网格的背景,或者是否有人知道任何可以执行此操作的免费网格组件.

谢谢

科林

And*_*and 12

您可以使用支持所有者绘图的TDrawGrid(或a TStringGrid),并执行此操作

procedure TForm1.FormCreate(Sender: TObject);
begin
  FBg := TBitmap.Create;
  FBg.LoadFromFile('C:\Users\Andreas Rejbrand\Pictures\Sample.bmp');
end;
Run Code Online (Sandbox Code Playgroud)

其中FBg是a TBitmap(例如,在表单类中),然后执行

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  r: TRect;
begin
  if not (Sender is TStringGrid) then Exit;
  BitBlt(TStringGrid(Sender).Canvas.Handle,
         Rect.Left,
         Rect.Top,
         Rect.Right - Rect.Left,
         Rect.Bottom - Rect.Top,
         FBg.Canvas.Handle,
         Rect.Left,
         Rect.Top,
         SRCCOPY);
  if gdSelected in State then
    InvertRect(TStringGrid(Sender).Canvas.Handle, Rect);
  r := Rect;
  TStringGrid(Sender).Canvas.Brush.Style := bsClear;
  DrawText(TStringGrid(Sender).Canvas.Handle,
           TStringGrid(Sender).Cells[ACol, ARow],
           length(TStringGrid(Sender).Cells[ACol, ARow]),
           r,
           DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS);
end;
Run Code Online (Sandbox Code Playgroud)

示例截图http://privat.rejbrand.se/drawgridbg.png 示例截图http://privat.rejbrand.se/drawgrid2.png 示例截图http://privat.rejbrand.se/drawgrid3.png

  • 很好的答案,但这也适用于TStringGrid,因为它继承自TDrawGrid. (5认同)