Немного модифицировал код, который написал san-46, вот он, ниже:
Переменная
N задаёт индекс, который нужно покрасить.
Переменная
COLORE содержит цвет, в который нужно красить айтем.
Код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox).Canvas do begin
if Index=N then Brush.Color := COLORE;
FillRect(Rect);
TextOut(Rect.Left + 2, Rect.Top, (Control as TListBox).Items[Index])
end;
end;
Всё хорошо, только у меня несколько прогонов подобных. И нужно пораскрашивать несколько айтемов разными цветами, в зависимости от условий. При вызове ListBox1.Invalidate окрашивается только одна строка. При повторном вызове Invalidate, эта строка приходит в первоначальный вид, а следующая окрашивается. Как сделать так, чтобы у строк цвет оставался?