Das sieht sowieso fürchterlich aus

, Du machst alles doppelt und dreichach
Hier was einfacheres:
Code: Alles auswählen
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
var
c : TColor;
s : TTextStyle;
begin
if StringGrid1.Cells[3,Arow]='Eingang' then
c:=clYellow
else
if StringGrid1.Cells[3,Arow]='In Bearbeitung' then
c:=clFuchsia
else
if StringGrid1.Cells[3,Arow]='Einheit ausgerückt' then
c:=clRed;
if gdSelected in AState then
c:=clSkyBlue;
StringGrid1.Canvas.FillRect(aRect);
StringGrid1.Canvas.Font.Color:=clBlack;
FillChar(s,SizeOf(s),#0);
s.Layout:=tlCenter;
StringGrid1.Canvas.TextRect(aRect,aRect.Left, aRect.Top, StringGrid1.Cells[ACol, ARow],s);
end;
Die Verwendung von TextRect stellt sicher, daß der Text nicht über aRect hinaus dargestellt wird, es könnten sonst die Zellgrenzen des Grids überschritten werden, was nicht shön aussieht.
Die Stringvergleiche sind eventuell problematisch, da die Strings auch wirklich gleich sein müssen, ein Leerzeichen zuviel irgendwo und schon gehts schief. Überprüfe ob in StringGrid1.Cells[3,aRow] auch wirklich "Einheit ausgerückt" steht und nicht etwa sowas wie "Einheit ausgerückt "