Вниз
Скачать: 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
14-1105614843
Ilya___
2005-01-13 14:14
2005.01.30
Подскажите, где можно взять библиотеку FastDib для Делфи 7.


3-1104262713
zokzok
2004-12-28 22:38
2005.01.30
Доступ к таблице из другой формы


1-1105712210
Skiner_Y
2005-01-14 17:16
2005.01.30
Меню


8-1098363487
X-Disa
2004-10-21 16:58
2005.01.30
Сохранение иконки


1-1105889648
Exit
2005-01-16 18:34
2005.01.30
RichEdit




   Наверх