Hier mal ein kleines Beispiel:
Delphi-Quellcode:
procedure TForm18.StringGrid1DrawColumnHeader(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF);
begin
canvas.BeginScene;
// Hintergrund leeren bzw. ausfüllen
canvas.ClearRect(bounds,TAlphaColorRec.LightGray);
// Linienbreite
canvas.Stroke.Thickness := 0.2;
canvas.Fill.Color := TAlphaColorRec.Silver;
if Column.Index >0 then begin
// Linie links
canvas.DrawLine(PointF (bounds.Left, bounds.Top), PointF (bounds.left, bounds.Bottom), 1);
end;
canvas.DrawLine(PointF (bounds.Left, bounds.Bottom), PointF (bounds.Right, bounds.Bottom), 1);
canvas.Fill.color := TAlphaColorRec.black;
canvas.FillText(Bounds, column.Header, false, 1, [], TTextAlign.Center, TTextAlign.Center);
canvas.EndScene;
end;
Unter Windows 10 sieht das aus, wie im anliegenden Screenshot. Für Deine Bedürfnisse kannst Du das ja entsprechend anpassen, auch hinsichtlich der Farben. Soll der Header allerdings anklickbar sein, müsstest Du die verschiedenen Verhaltensweisen (Mouse fährt drüber, Klick down) auch noch selber hier zeichnen, würde dann also deutlich komplizierter werden.
Wäre evtl. auch sinnvoll, das als Bug zu melden, denn das sieht gerade unter Windows 10 ziemlich bescheiden aus.