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;