Ich habe eine Demo von hier verwendet und wollte die Menunamen in meinem Stringgrid (Row 0) zentrieren, sie bleiben aber linksbündig, was mache ich falsch?
Delphi-Quellcode:
procedure Tlote.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
celltext: string;
begin
with (Sender as TStringGrid) do
begin
celltext := Cells[ACol, ARow];
if (ARow = 0) then // Nur für Zeile 0
begin
canvas.Font.Style := canvas.Font.Style + [fsBold];
canvas.Brush.Color := clteal; // Hintergrundfarbe
canvas.Font.Color := clwhite; // Schriftfarbe
DrawText(Canvas.Handle, PChar(celltext), Length(celltext),
Rect, DT_Center) // Schrift zentrieren
end;
if (ACol = 1) and (ARow > 0) then
begin
canvas.Brush.Color := clmoneygreen;
canvas.Font.Style := canvas.Font.Style + [fsBold];
canvas.Font.Color := clblue; // Schriftfarbe
end;
if (ACol = 0) and (ARow > 0) then
begin
canvas.Font.Size := 12;
canvas.Font.Style := canvas.Font.Style + [fsBold];
canvas.Font.Color := clred; // Schriftfarbe
end;
// Hier beginnt nun das Zeichnen:
Canvas.FillRect(Rect); // Hintergrund zeichnen
DrawText(Canvas.Handle, PChar(celltext), Length(celltext),
Rect, DT_SINGLELINE); // Textausgeben
// Optional kann der Text auch Zentriert werden.
// dann mit diesem Parameter;
// DT_SINGLELINE or DT_Center or DT_VCENTER
end;
end;