... ok, Danke euch beiden. Da ich bereits ein StringGrid habe und nutze, mein Gedanke sich aber wohl nicht "einfach" umsetzen lässt, wurde der Gedanke an "bunte Zeilen" verworfen.
Das ist sogar sehr einfach. Du musst es nur halt machen wie beschrieben...
Du musst darauf reagieren, dass der Inhalt neu gezeichnet werden muss. Deshalb bringt es nichts, wenn du es nur einmalig per Buttonklick zeichnest. Stell DefaultDrawing auf False, dann kannst du im OnDrawCell z.B. das machen:
Delphi-Quellcode:
procedure TForm.StringGridDrawCell(Sender: TObject; ACol, ARow: LongInt; Rect: TRect; State: TGridDrawState);
var
Grid: TStringGrid;
begin
Grid := Sender as TStringGrid;
if gdFixed in State then
begin
Grid.Canvas.Brush.Color := clInactiveCaption;
Grid.Canvas.Font.Color := clBlack;
end
else
if gdSelected in State then
begin
Grid.Canvas.Brush.Color := clHighlight;
Grid.Canvas.Font.Color := clHighlightText;
end
else
begin
if Grid.Cells[ACol, ARow] = 'x' then
Grid.Canvas.Brush.Color := clRed
else
Grid.Canvas.Brush.Color := clWindow;
Grid.Canvas.Font.Color := clWindowText;
end;
Grid.Canvas.FillRect(Rect);
Grid.Canvas.TextOut(Rect.Left + 3, Rect.Top + 3, Grid.Cells[ACol, ARow]);
end;