字符串网格代码的问题(对齐中心)

时间:2011-07-12 23:31:17

标签: delphi alignment center tstringgrid

Delphi: How to make cells' texts in TStringGrid center aligned?

当我使用顶部代码(OnDraw部分)时,它不会删除第一个文本并在旧文本上写入新文本,而一个sel将复制。

1 个答案:

答案 0 :(得分:2)

在写出新文本之前,您需要添加对TCanvas.FillRect的调用:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  S: String;
begin
  S := StringGrid1.Cells[ACol, ARow];
  StringGrid1.Canvas.FillRect(Rect);
  SetTextAlign(StringGrid1.Canvas.Handle, TA_CENTER);
  StringGrid1.Canvas.TextRect(Rect,
    Rect.Left + (Rect.Right - Rect.Left) div 2, Rect.Top + 2, S);
end;

请注意,您还必须确保TStringGrid.DefaultDrawing设置为False才能生效。