В этой статье кратко описывается, как Delphi реализует элементы в Listbox для отображения разных цветов в зависимости от содержимого. Шаги реализации следующие:
Измените свойство Style ListBox1 на lbOwnerDrawVariable.
В событии OnDrawItem ListBox измените свойство Canvas в соответствии со значением элемента.
Пример кода выглядит следующим образом:
процедура TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TownerDrawState);begin //Шрифт использует исходный цвет по умолчанию if Odd(index), then //Цвет, когда индекс элементов нечетный номер начала listbox1 .Canvas.Brush.Color:=clwindow; ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]); end else //Цвет, когда индекс элементов четный, начало listbox1.Canvas.Brush.Color:=clinactivecaptiontext ; ListBox1 .Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]); odSelected в состоянии then //Цвет при выборе start listbox1.Canvas.Brush.Color:=clhighlight; ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);