Gestern hatte ich leider keine Zeit mehr, um mir das Problem nochmal genauer anzusehen.
Soweit ich mich erinnern kann, musst du dich
immer um das Zeichnen
jeder Zelle kümmern. Also nicht nur bei denen, die du anders darstellen willst.
Ich kann es hier im Moment nicht testen (gerade kein Delphi verfügbar), aber wenn du den Source in etwa so änderst, sollte es besser funktionieren:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
State: TGridDrawState);
var
grdCanv : TCanvas; // Dadurch kürze Schreibweise ohne das "WITH"
OldColor : TColor;
begin
grdCanv := StringGrid1.Canvas;
OldColor := grdCanv.Font.Color;
if (ACol=4) and (ARow>0) then begin
grdCanv.Font.Color:=clred;
end;
grdCanv.FillRect(Rect);
grdCanv.Textout(Rect.Left+2,Rect.Top+2, StringGrid1.Cells[ACol,ARow]);
// Statt Textout ist vielleicht TextRect die bessere Wahl
grdCanv.Font.Color := OldColor;
end;
Auch wenn das "with" hier nicht das Problem ist, solltest du es vermeiden. Es verursacht immer wieder mal Probleme.