Als ich Raiks Code gesehen hatte, hatte ich mich schon geärgert, dass ich immer per FillRect oder TextRect die Zelle überzeichne.
Nachdem ich es gerade getestet habe, musste ich feststellen, dass das so nicht geht.
Ist ja auch klar -> OnDrawCell wird NACH dem Zeichnen aufgerufen, nicht davor (wie bei ListBoxes, etc)
Zum Beispiel zeichnet der folgende Code die Zeilen abwechselnd weiß und hellgrau (ParentColor des Grids kann also auf true stehen):
Delphi-Quellcode:
With Sender As TStringGrid Do
Begin
If aRow < FixedRows Then Exit;
If aCol < FixedCols Then Exit;
With Canvas Do
Begin
// wenn Zelle ausgewählt...
If gdSelected In State Then
Brush.Color := $00EFD3C6
// sonst ...
Else If aRow Mod 2 = 0 Then
Brush.Color := $00EFEFEF
Else
Brush.Color := clWhite;
// Zeichne den Text mit dem veränderten Hintergrund
TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
End;
End;