Hallo!
Gerade bin ich auf ein mir unerklärliches Phänomen beim Färben einer Spalte eines ListViews gestoßen. Kann es sein, dass die Systemvariable clWindows während eines CustomDraws den Inhalt ändert?
Folgender Code soll die angeklickte Spalte (ListView1SortCol) mit einem hellen Gelb markieren:
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if ListView1SortCol=0 then ListView1.Canvas.Brush.Color:= $E4FFFF
else ListView1.Canvas.Brush.Color:= clWindow;
end;
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
if ListView1SortCol=SubItem then ListView1.Canvas.Brush.Color:= $E4FFFF
else ListView1.Canvas.Brush.Color:= clWindow;
end;
Die Spalten vor ListView1SortCol werden mit korrektem Hintergrund angezeigt, während die Spalten danach mit der gleichen Farbe wie die markierte Spalte gefärbt werden. Erstetze ich jedoch clWindow durch clWhite, funktioniert alles.
Aber clWindow sollte sich doch nicht ändern, oder?
Gruß
e-gon