Soll es nur eine Bestimmte Zeile einfärben?
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (control as TListBox) do
begin
if Index = 4 then //bei best. Zeile soll folgendes gelten
begin
Canvas.Brush.Color := clRed;
Canvas.Pen.Color := clWhite;
Canvas.Rectangle(Rect);
end;
Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]);
end;
end;
Geb keine Garantie das es funktioniert, ist schnell geschrieben wurden.
Edit: Also Quelltext hab ich kurz getetstet, tut einwandfrei.
Vergiss aber nicht, die Eigenschaft Style deiner ListBox auf lbOwnerDrawVariable zu stellen.
Ansonsten wird die Routine nicht aufgerufen.
Zitat:
Beschreibung
Mit Style können Sie festlegen, ob es sich bei dem Listenfeld um ein Standardlistenfeld handelt, das Strings anzeigt, oder um ein Owner-Draw-Listenfeld, das auch Grafiken anzeigen kann. Owner-Draw-Listenfelder ermöglichen es dem Entwickler, Einträge auf eine Weise anzuzeigen, die nicht dem Standard entspricht. Der entsprechende Quelltext zum Zeichnen von Elementen im Listenfeld muss in diesem Fall vom Anwendungsentwickler bereitgestellt werden.
Style bestimmt, ob das Listenfeld virtuell ist, die Einträge als dynamisch über Ereignisbehandlungsroutinen bereitgestellt werden. Standardmäßig hat Style den Wert lbStandard, was bedeutet, daß das Listenfeld nicht virtuell ist und alle Einträge als Strings angezeigt werden.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.