Hai tom_po,
hihi der Code kommt mir doch bekannt vor.
Du gibst in Zeile 14 den Text zwar zentiert aus aber dann löschst Du ihn in Zeile 32 wieder um in dann wieder linksbündig zu zeichenen.
Am besten nimmst Du eine Variable in der Du den "Ausgabemodus" speicherst und dann ganz am Ende verwendest.
Delphi-Quellcode:
procedure Tlote.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
celltext: string;
Mode : Cardinal;
begin
Mode := DT_SINGLELINE;
with (Sender as TStringGrid) do
begin
celltext := Cells[ACol, ARow];
if (ARow = 0) then // Nur für Zeile 0
begin
Mode := Mode or DT_Center;
end;
// Hier beginnt nun das Zeichnen:
Canvas.FillRect(Rect); // Hintergrund zeichnen
DrawText(Canvas.Handle, PChar(celltext), Length(celltext),
Rect, Mode); // Textausgeben
end;
end;
Stephan B.