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