Вниз
Скачать: CL | DM;

отображение в ListBox-е разноцветных строк   Найти похожие ветки 

 
Антоныч   (2005-01-19 15:12) [0]

Привет всем!
Возник у меня небольшая проблема. Окрашиваю элементы в ListBoxе в разные цвета следующей процедурой:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox) do begin
Canvas.FillRect(Rect);
if ItemIndex=0 then Canvas.Font.Color:=clred else
if ItemIndex=1 then Canvas.Font.Color:=clgreen else
Canvas.Font.Color:=clblue;
Canvas.TextOut(Rect.Left,Rect.Top,Items[Index]);
end;
end;

Так вот, элемент окрашивается в свой цвет, только если его выбрать, а первоначально они все отображаются синими. Читал про возникновение события OnDrawItem - дословно: "Возникает, когда программа должна нарисовать очередной элемент". Вроде все верно, а не пашет. Подскажите, пожалуйста, где ошибка.


 
Александр Иванов ©   (2005-01-19 15:18) [1]

if ItemIndex=0 then Canvas.Font.Color:=clred else
if ItemIndex=1 then Canvas.Font.Color:=clgreen else
Canvas.Font.Color:=clblue;

Отсюда следует, что если Выбран не нулевой и первый, то цвет - clBlue


 
Антоныч   (2005-01-19 15:28) [2]

В принципе, верно. На этапе создания формы индекс у списка -1. Но тогда подскажите, как сделать, чтоб они сразу разноцветными отображались?


 
Антоныч   (2005-01-19 15:51) [3]

Хотя вообще-то Index в данном случае - это не индекс выбранного, а индекс отображаемого элемента (по документации). Так что где грабли - непонятно.. :)


 
begin...end ©   (2005-01-19 16:07) [4]

> [3] Антоныч   (19.01.05 15:51)

Index в этом обработчике - это индекс прорисовываемого в данный момент элемента. А вот ItemIndex - это индекс выбранного элемента.

Поэтому осталось внимательно посмотреть на свой код (особенно на первую половину). И сразу станет ясно, где грабли.


 
Плохиш ©   (2005-01-19 16:08) [5]

ItemIndex - это номер выбранного элемента, а использовать тебе надо Index


 
Антоныч   (2005-01-19 16:08) [6]

Блин, спасибо большое! Слона-то я и не заметил, как говорится :).



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
9-1098072598
Trimp
2004-10-18 08:09
2005.01.30
Выбор компонента


6-1100142838
Aleks_Grey
2004-11-11 06:13
2005.01.30
Вопрос - как достать информацию из сети?


14-1105559322
Кудесник
2005-01-12 22:48
2005.01.30
Посоветуйте ХОРОШУЮ программу для изучения иностранных языков...


3-1103892760
Anatoliy T.
2004-12-24 15:52
2005.01.30
HalcyonDataSet проблема с фильтром


4-1102606790
Иван2
2004-12-09 18:39
2005.01.30
Можно мне пример привести, как на окошке api текст написать?




   Наверх