Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Listview


Автор: Bibimij 26.8.2005, 20:46
Я создал в listview'е итемы с разными значениями цветов (с помощью event'а onCustomDrawItem). А как мене теперь получить цвет нужного итема, найденного с помощью indexof? smile

Автор: Quadr0 26.8.2005, 22:31
...

Автор: _hunter 29.8.2005, 11:54
Цитата
А как мене теперь получить цвет нужного итема, найденного с помощью indexof?

тебе лучше знать smile

Автор: Bibimij 30.8.2005, 07:47
Цитата(Quadr0 @ 26.8.2005, 22:31)
По какому критерию выбирается цвет для итема? И где хранится это значение цвета?

Я пишу чат для локалки. Все учатники чата располагаются у меня в Listview'е. Когда заходит новый чел, он посылает сообщение, в котором содержится выбранный им цвет и его ник. Ник и цвет я вытаскиваю из сообщения и пихаю в Listview. Вот код моей процедуры OnCustomDrrawItem:

Код

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  listview1.Canvas.Font.Color:=col;
  listview1.Column[0].Caption:='Всего в чате : '+inttostr(listview1.Items.Count)
end;


Переменная col имеет тип integer и хранит цвет (сюда заносится цвет, полученный из сообщения). Конечно можно создать отдельный массив, где будут лежать цвета каждого итема, но проблема в том, что у меня есть функция сортировки ников! smile
Поможите!!! smile

Автор: ~FoX~ 30.8.2005, 08:03
Цитата(Bibimij @ 30.8.2005, 08:47)
но проблема в том, что у меня есть функция сортировки ников!

1. сортируй вместе с массивом ников, массив колоров.
2. Добавляешь в листвайф еще один Column и складывай туда цвет итема.
3. К каждому итему, добавь субитем (невидимы) и храни цвет в неих.
4. Создай двумерный массив и работай уже с ним т.е. заполняй листвайф из массива.

Автор: Quadr0 30.8.2005, 12:45
...

Автор: Alex 30.8.2005, 13:41
Цитата(Quadr0 @ 30.8.2005, 13:45)
Но минус этого метода будет в самих классах, которые памяти занимают больше чем безобидные строки в суб итемах

Очень в этом сомневаюсь, т.к. любая колонка это такой же класс, а о ней гораздо больше информации нужно хранить

Автор: Quadr0 30.8.2005, 15:39
...

Автор: Bibimij 30.8.2005, 18:38
Цитата
Цитата(Bibimij @ 30.8.2005, 08:47)
но проблема в том, что у меня есть функция сортировки ников!

1. сортируй вместе с массивом ников, массив колоров.
2. Добавляешь в листвайф еще один Column и складывай туда цвет итема.
3. К каждому итему, добавь субитем (невидимы) и храни цвет в неих.
4. Создай двумерный массив и работай уже с ним т.е. заполняй листвайф из массива.

Спосибки! У дружил!!!! smile smile smile smile

Автор: Alex 30.8.2005, 21:39
Цитата(Quadr0 @ 30.8.2005, 16:39)
Да, конечно, но вот оно и получается, что будет класс колонки + класс итема + строки (они использоваться не будут, но они есть). А если хранить всё в суб итемах, то будет только класс колонки + строки

класс первой колонки и класс для хранения SubItems это две совершенно разных вещи и если в LV будет только первая колонка, то всеравно эффективней хранить в Data цвет, да проще сразу написать код, который потом можно быстро модифицировать и добавлять новые поля для хранения

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)