In diesem Artikel wird kurz beschrieben, wie Delphi Elemente in Listbox implementiert, um je nach Inhalt unterschiedliche Farben anzuzeigen. Die Implementierungsschritte sind wie folgt:
Ändern Sie die Style-Eigenschaft von ListBox1 in lbOwnerDrawVariable
Ändern Sie im OnDrawItem-Ereignis der ListBox die Canvas-Eigenschaft entsprechend dem Wert des Elements.
Der Beispielcode lautet wie folgt:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TownerDrawState);begin //Die Schriftart verwendet die ursprüngliche Standardfarbe, wenn Odd(index) then //Die Farbe, wenn der Index der Elemente ungerade ist Zahl beginnt listbox1 .Canvas.Brush.Color:=clwindow; ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]); end else //Die Farbe, wenn der Index der Elemente eine gerade Zahl ist begin listbox1.Canvas.Brush.Color:=clinactivecaptiontext ; ListBox1 .Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[end; odSelected in state then //Farbe bei Auswahl begin listbox1.Canvas.Brush.Color:=clhighlight; ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);