Hi,
ich möchte via DrawItem einer Listbox das aktuelle Lied markieren (der Hintergrund soll markiert werden). Nun habe ich aber das Problem, dass es bis zum nächsten Lied immer bleiben soll, auch wenn man ein anderes Item selektiert. Wie geht das ? Folgender Code macht verschiedene Sachen falsch, es ist allerdings bekomm ich die Fehlerbeschreibung hierbei nicht hin, da ich bisher noch kein Fehlerschema sehen konnte --> falls ihr den Fehler sowieso nicht sofort sehen solltet, könnt ihr es immernoch kurz selbst testen. TNoScrollListbox ist übrigens eine Ableitung einer TListbox und verhält sich genauso, bloß hat sie keine Scrollbar.
Delphi-Quellcode:
procedure TfrmMain.lbListDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TNoScrollListBox).Canvas do
begin
if Index = last+1 then // last ist das zuletzt gespielte Lied
begin
Pen.Color := sLbLeft.Pen.Color;
Brush.Color := sLbLeft.Brush.Color;
end else
begin
Brush.Color := lbList.Color;
end;
FillRect(Rect);
TextOut(Rect.Left + 2, Rect.Top, (Control as TNoScrollListBox).Items[Index]);
end;
end;