Ein Blick in die Sourcen könnte da hilfreich sein:
Delphi-Quellcode:
procedure TStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState);
var
LText: string;
LX: Integer;
LTextRect: TRect;
begin
if DefaultDrawing then
begin
LTextRect := ARect;
LTextRect.Inflate(-1, -1);
if not LTextRect.IsEmpty then
begin
LText := Cells[ACol, ARow];
case CellAlignments[ACol, ARow] of
taLeftJustify:
LX := LTextRect.Left + 5;
taRightJustify:
LX := LTextRect.Right - 5 - Canvas.TextWidth(LText);
taCenter:
LX := LTextRect.Left + (LTextRect.Width - Canvas.TextWidth(LText)) div 2;
else
LX := 0;
end;
Canvas.TextRect(LTextRect, LX, LTextRect.Top + (LTextRect.Height - Canvas.TextHeight(LText)) div 2, LText);
end;
end;
inherited DrawCell(ACol, ARow, ARect, AState);
end;
Beim Aufruf von
DrawCell hat
ARect die Breite des entsprechenden
ColWidths-Werts. Mit dem
Inflate wird es 2 Pixel schmaler. Dann kommt je nach
CellAlignments eventuell noch ein Offset dazu.