Vielen Dank für die Antwort.
Leider führt Deine Variante bei mir zu dem selben Ergebnis. In dieser Hinsicht habe ich wie gesagt schon relativ viel probiert.
Ich habe gerade eben noch etwas festgestellt:
Wenn ich "DefaultDrawing" auf true lasse und mein OnDrawCell-Event folgendermaßen aufbaue:
Delphi-Quellcode:
procedure TSelectTextDlg.StringGrid1DrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s:string;
begin
with stringgrid1 do
begin
if (ARow <> SelectedItem) or (ACol = 0) then
Canvas.Brush.Color := clWhite
else
Canvas.Brush.Color := clSkyBlue;
s := Cells[ACol, ARow];
Canvas.FillRect(Rect);
DrawText(Stringgrid1.Canvas.Handle, PChar(s), StrLen(PChar(s)),Rect,DT_LEFT+DT_WORDBREAK);
end;
end;
Dann tritt der Effekt des doppelten Zeichnens nicht auf. Quasi nur wegen der vorherigen Farbgebung. Lasse ich die if-Schleife weg wird wieder doppelt gezeichnet. Dafür kann es keine logische Erklärung geben
Wie dem auch sei: Ich habe nun DefaultDrawing auf false gesetzt und die Markierung einer Zelle wie im obigen Code zu sehen umgesetzt. So sieht das Stringgrid genauso aus, wie ich es haben möchte.
Grüße
Headbucket