Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#1

Einzelne Zelle in TListView färben, Denkfehler?

  Alt 11. Mai 2015, 16:12
Hallo an alle .

Gegeben sei dieser Code:
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
    if (SubItem = 1) AND (Item.Index = 1) then
        Sender.Canvas.Brush.Color:= clGreen
(*    else
        Sender.Canvas.Brush.Color:= clWindow;*)

end;
Was erwartet man? Doch eigentlich, dass nur die Zelle mit Zeilenindex=1 und Spaltenindex=1 grün gefärbt wird. Was passiert stattdessen? Es werden alle Zellen mit Zeilenindex=1 und Spaltenindex>=1 gefärbt! Siehe Bild im Anhang. Das Verhalten ist im D5 und XE2 identisch.

Also hab ich mit dem auskommentierten else -Zweig und CustomDrawItem und ähnlichen Sachen rumgespielt, aber nichts führt zum gewünschten Ergebnis. Hab ich einen Denkfehler? Wenn ja, kann mir den bitte jemand zeigen?

Was ich nicht möchte, ist ein OwnerDraw=True, weil dadurch das Theming flöten geht.

MfG Dalai
Miniaturansicht angehängter Grafiken
dp_listviewcustomdraw.png  
  Mit Zitat antworten Zitat