Вниз
Скачать: 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.034 c
3-1103976137
Russko
2004-12-25 15:02
2005.01.30
Удаление записей из таблицы


1-1106150907
Wolf3
2005-01-19 19:08
2005.01.30
Ка поставить таймаут на определенное время?


1-1105820591
akvilon
2005-01-15 23:23
2005.01.30
ScrollBar, размер каретки


11-1087067965
Андрей2
2004-06-12 23:19
2005.01.30
Не происходит переключение между формами


1-1105516483
kull
2005-01-12 10:54
2005.01.30
Повторяющийся код.




   Наверх