Einzelnen Beitrag anzeigen

Headbucket

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

Mehrzeiliges Stringgrid (Doppeltes Zeichnen bei XE5)

  Alt 20. Jan 2014, 07:27
Delphi-Version: XE5
Hallo,

manche werden jetzt vllt denken "nicht schon wieder mehrzeiliges Stringgrid". Leider muss ich aber trotzdem meine Frage hier loswerden.
Ich hatte bei Delphi 2007 ein Stringgrid, welches Texte mit Zeilenumbrüchen darstellen konnte. Dabei habe ich im DrawCell-Event folgenden Code benutzt:
Delphi-Quellcode:
procedure TSelectTextDlg.StringGrid1DrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState);
var
 s:string;
begin
with stringgrid1 do
 begin
  s := Cells[ACol, ARow];
  Canvas.FillRect(Rect);
  DrawText(Stringgrid1.Canvas.Handle, PChar(s), Length(s), Rect, DT_left);
 end;
end;
Das ganze hat wunderbar funktioniert. Nun möchte ich solch ein Stringgrid auch unter XE5 verwenden. Leider wird hier der Text doppelt gezeichnet (siehe Anhang).
Allerdings nur, wenn ich die Zelle direkt anwähle. So ist im oberen Teil des Bildes zu sehen, dass die 1 doppelt gezeichnet wird. Im unteren Teil des Bildes klicke ich dann die Zelle mit dem Text an, wobei der Inhalt der Zelle dann ohne Zeilenumbruch nochmal über die Zelle gezeichnet wird.
Wenn ich den Inhalt der Zelle auslese, gibt er mir den richtigen Inhalt wieder.

Das OnSelectCell-Event habe ich versuchshalber ausgeblendet. Daran liegt es also nicht.
Hat schon jemand ein mehrzeiliges Stringgrid bei den neueren Delphi-Versionen hinbekommen?

Ich habe schon alle möglichen Codes versucht. Bei manchen werden sogar die nicht angewählten Zellen doppelt ausgegeben.
Hat jemand eine Idee?

Grüße
Headbucket
Miniaturansicht angehängter Grafiken
stringgrid.jpg  
  Mit Zitat antworten Zitat