Das lässt sich mit einen StringGrid durchaus lösen.
Jede Zelle des StringGrid muss aber zusätzlich zum Text eine Information (Farbe) tragen.
Diese Info kann man nun im Text der Zelle selbst unter bringen oder im
Property Objects[].
Delphi-Quellcode:
// StringGrid.DefaultDrawing auf False setzen
// OnDrawCell - Handler
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
celltext:string;
canvas : TCanvas;
color : TColor;
begin
celltext := StringGrid1.Cells[Acol, ARow];
Canvas := StringGrid1.Canvas;
if (ACol >= StringGrid1.FixedCols) and (ARow>= StringGrid1.FixedRows) then
begin
color := clGreen;
if celltext = '*' then
color := clRed
end
else
color := clBtnface;
// Hintergrund zeichnen
Canvas.Brush.Color := color;
Canvas.FillRect(Rect);
// Text ausgeben
DrawText(Canvas.Handle, PChar(celltext), Length(celltext), Rect, DT_SINGLELINE);
end;
Du brauchst jetzt du die Zellen mit einem '*' zu belegen und sie werden rot.