Показать сообщение отдельно
  #7  
Старый 19.10.2008, 19:14
w1zard w1zard вне форума
Прохожий
 
Регистрация: 04.07.2008
Сообщения: 26
Репутация: 10
По умолчанию

Немного модифицировал код, который написал 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, эта строка приходит в первоначальный вид, а следующая окрашивается. Как сделать так, чтобы у строк цвет оставался?
Ответить с цитированием