Hallo,
ich will mit Hilfe des Ereignisses OnAdvancedCustomDrawItem einen farbigen Rahmen um ein markiertes Item zeichnen. Das funktioniert auch soweit ganz gut. Aber wenn ich mit den Pfeiltasten das Item wechsel, dann erscheint das Item darunter Fett. wechsel ich wieder zurück, dann ist es wieder normal.
Der Code meines Ereignisses:
<pre>
procedure TFormMP3Player.ListViewPlaylistAdvancedCustomDrawI tem(
Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var t_rect : TRect;
t_color : TColor;
t_old, t_new : TBrush;
begin
DefaultDraw:=true;
inherited;
if (Item.Selected) then
begin
t_rect:=Item.DisplayRect(drLabel);
t_rect.BottomRight.Y:=t_rect.BottomRight.Y-1;
t_old:=Sender.Canvas.Brush;
t_new:=TBrush.Create;
t_new.Color:=clBlue;
Sender.Canvas.Brush:=t_new;
Sender.Canvas.FrameRect(t_rect);
Sender.Canvas.Brush:=t_old;
FreeAndNil(t_new);
end;
end;
</pre>
Wie man deutlich sehen kann, habe ich schon alles versucht (Instanz der Klasse TBrush erzeugen, die alte merken und am Schluß wieder zuweisen)
Vielen Dank schon einmal für eure Unterstützung.
Michael Lamers
ich will mit Hilfe des Ereignisses OnAdvancedCustomDrawItem einen farbigen Rahmen um ein markiertes Item zeichnen. Das funktioniert auch soweit ganz gut. Aber wenn ich mit den Pfeiltasten das Item wechsel, dann erscheint das Item darunter Fett. wechsel ich wieder zurück, dann ist es wieder normal.
Der Code meines Ereignisses:
<pre>
procedure TFormMP3Player.ListViewPlaylistAdvancedCustomDrawI tem(
Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var t_rect : TRect;
t_color : TColor;
t_old, t_new : TBrush;
begin
DefaultDraw:=true;
inherited;
if (Item.Selected) then
begin
t_rect:=Item.DisplayRect(drLabel);
t_rect.BottomRight.Y:=t_rect.BottomRight.Y-1;
t_old:=Sender.Canvas.Brush;
t_new:=TBrush.Create;
t_new.Color:=clBlue;
Sender.Canvas.Brush:=t_new;
Sender.Canvas.FrameRect(t_rect);
Sender.Canvas.Brush:=t_old;
FreeAndNil(t_new);
end;
end;
</pre>
Wie man deutlich sehen kann, habe ich schon alles versucht (Instanz der Klasse TBrush erzeugen, die alte merken und am Schluß wieder zuweisen)
Vielen Dank schon einmal für eure Unterstützung.
Michael Lamers