moin,
du müsstest in der Zelle irgendwie hinterlegen, ob und ggf. wie diese gefärbt werden soll (hintergrundklasse (TStringgrid.Objects), string-prefix, etc.) und dies dann im OnDrawCell auswerten. Nicht vergessen, die Eigenschaft DefaultDrawing des Stringgrids auf false zu setzen, damit das OwnerDraw aktiviert wird.
bei verwendung einer klasse sicherstellen, dass die Objekte auch wieder ordnungsgemäß freigegeben werden (tückisch bei variabler spalten-/zeilenanzahl)
Du kannst auch in TStringgrid.Objects auch nur ein Flag hinterlegen (bis 32Bit integer), ist vielleicht am einfachsten. Zugreifen dann einfach per hardcast.
stringgrid1.objects[0,0]:=TObject(1);
if integer(stringgrid1.objects[0,0])=1 then ...
das OnDrawCell sieht dann so in etwa aus:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
begin
(sender as TStringgrid).canvas.Brush.color:=(sender as TStringgrid).color;
if integer(stringgrid1.objects[col,row])=1 then
(sender as TStringgrid).canvas.Brush.color:=clgreen;
(sender as TStringgrid).canvas.FillRect(rect);
(sender as TStringgrid).canvas.TextOut(rect.left+2,rect.top+2,(sender as TStringgrid).Cells[col,row]);
end;
HTH Frank