Vielen Dank
Funktioniert genau so wie ich es mir vorgestellt habe. Problem bei meiner Methode wäre auch gewesen wenn ich noch weitere Formatierungen hätte vornehmen wollen wäre das in einem Chaos geendet^^
Kann mir jemand sagen wo hierbei mein Fehler bei der Textausrichtung ist?
Den Codeschnipsel hab ich so gefunden:
Delphi-Quellcode:
procedure TfrmMain.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;
Aufgerufen wird es in OnDrawCell
StringGridAlignment(StringGrid1,Rect,ACol,ARow,c.TextAlign,false);
Und gesetzt wird der Wert hier
c.TextAlign := taCenter;
Hab auch mal probiert im OnDrawCell direkt "taCenter" einzugeben. Hat aber nicht funktioniert, daher muss es an dem oberen Codeschnipsel liegen.