Delphi: How to make cells' texts in TStringGrid center aligned?
当我使用顶部代码(OnDraw部分)时,它不会删除第一个文本并在旧文本上写入新文本,而一个sel将复制。
答案 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
才能生效。