1

我使用以下自定义 OnDraw 根据列号为单元格的背景着色:

procedure TForm_ControlPanel.aoc_gridDrawCell(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  grid: TStringGrid;
  S: string;
  SavedAlign: word;
begin
  grid := Sender as TStringGrid;
  if (ACol = 2) and (ARow >= 1) then
  begin
    S := grid.Cells[ACol, ARow]; // cell contents
    grid.Canvas.Brush.Color := clGreen;
    grid.Canvas.FillRect(Rect);
    SavedAlign := SetTextAlign(grid.Canvas.handle, TA_CENTER);
    grid.Canvas.TextRect(Rect, Rect.Left + (Rect.Right - Rect.Left) div 2,
      Rect.Top + 5, S);
    SetTextAlign(grid.Canvas.handle, SavedAlign);
    grid.Canvas.Brush := grid.Brush;
  end;
end;

但结果我总是在左侧有一个没有颜色的“栏”:

单元格的左侧部分未着色

我正在使用德尔福 XE6。

4

0 回答 0