Einzelnen Beitrag anzeigen

Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Mehrzeiliges Stringgrid (Doppeltes Zeichnen bei XE5)

  Alt 22. Jan 2014, 13:57
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
  Mit Zitat antworten Zitat