Home » Tipps & Tricks » Komponenten » TStringGrid » Text im StringGrid ausrichten

Text im StringGrid ausrichten

Folgende Methode zeigt, wie man Text in StringGrid-Zellen linksbündig, zentriert und rechtsbündig sowohl mit als auch ohne Zeilenumbruch ausgeben kann. Aufgerufen wird die Methode im OnDrawCell-Ereignis von TStringGrid (s. Beispielaufruf ganz unten).

procedure StringGridAlignment(Grid: TStringGrid; Rect: TRect; ACol, ARow: Integer;
  Alignment: TAlignment; LineBreak: Boolean);
var
  TextOut: string;
begin
  Grid.Canvas.FillRect(Rect);
  TextOut := Grid.Cells[ACol,ARow];
  if LineBreak = false then
  begin
    if Alignment = taLeftJustify then
      DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_LEFT);
    if Alignment = taCenter then
      DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_CENTER);
    if Alignment = taRightJustify then
      DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_RIGHT);
  end
  else
  begin
    if Alignment = taLeftJustify then
      DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)),
      Rect,DT_LEFT+DT_WORDBREAK);
    if Alignment = taCenter then
      DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,
      DT_CENTER+DT_WORDBREAK);
    if Alignment = taRightJustify then
      DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,
      DT_RIGHT+DT_WORDBREAK);
  end;
end;


//Methode im OnDrawCell aufrufen
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  //Text linksbündig ohne Zeilenumbruch in der ersten Zeile
  if ARow = 0 then
    StringGridAlignment(StringGrid, Rect, ACol, ARow, taLeftJustify, False);

  //Text zentriert mit Zeilenumbruch in der zweiten Zeile
  if ARow = 1 then
    StringGridAlignment(StringGrid, Rect, ACol, ARow, taCenter, True);

  //Text rechtsbündig ohne Zeilenumbruch restliche Zeilen
  if ARow > 1 then
    StringGridAlignment(StringGrid, Rect, ACol, ARow, taRightJustify, False);
end;