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

Проблема с сортировкой ListView   Найти похожие ветки 

← →
sergundi   (2004-04-15 13:04) [0]

Есть несколько столбцов в ListView. Добавляю в него ListItem, затем включаю сортировку по второму столбцу (дата) SortType = stBoth. После этого при добавлении следующего ListItem возникает Exception: List index out of bounds(1) в момент присвоения значения ListItem.Caption (при этом возникает onCompare и в вызове ListViewCompare параметр Item2.Subitems[1] еще не создан). Присвоить SortType = stNone не получается: компилятор выдает Incompatible types TSortType и TSubFieldType. Как быть?


← →
Reindeer Moss Eater ©   (2004-04-15 13:12) [1]

После этого при добавлении следующего ListItem

Сразу после создания нового ListItem в нем еще нет Subitems, а OnCompare уже вызывается. А в нем идет обращение к несуществующим subitem"ам.
Делай выводы ...


← →
sergundi   (2004-04-15 13:17) [2]

Reindeer Moss Eater:

Я это понимаю, но:
1. А как же при добавлении самого первого ListItema?
2. Почему ругается компилятор (см. начало)
3. Как вообще тогда использовать возможность сортировки?

Подскажите, если знаете, я не въеду никак.


← →
Reindeer Moss Eater ©   (2004-04-15 13:29) [3]

1.Фик ли тут въезжать?

У тебя есть обработчик OnCompare?
В нем есть обращение к элементам SubItems по индексу?
Ты можешь проверить, что запрашиваемый индекс меньше чем Item1.SubItems.Count ?

Или надо институт закончить что бы это понять?

2. Про ругательство компилятора.
ListView1.SortType:=ComCtrls.stNone;


← →
sergundi   (2004-04-15 13:39) [4]

Ты можешь проверить, что запрашиваемый индекс меньше чем Item1.SubItems.Count

Если я это делаю, сортировка происходит некорректно: первый элемент выпадает из сортированного списка. Он будет помещен на нужное место только при следующем добавлении ListItem. Если у тебя есть пример использования сортировки с событием onCompare, кинь плз мне на мыло или сюда.


← →
Reindeer Moss Eater ©   (2004-04-15 13:42) [5]

А как она может произойти корректно, если то, по чему идет сравнение еще в природе не существует?


← →
Reindeer Moss Eater ©   (2004-04-15 13:44) [6]

Если я это делаю, сортировка происходит некорректно: первый элемент выпадает из сортированного списка. Он будет помещен на нужное место только при следующем добавлении ListItem.

И что? Виндовый проводник, например, ведет себя точно так же.
Только он не ждет создания еще одного файла/каталога что бы отсортировать созданный файл/каталог. Он делает пересортировку по "обновить"


← →
sergundi   (2004-04-15 13:52) [7]

Понятно, пасиба


← →
Тимохов ©   (2004-04-15 13:56) [8]

я делал так - добавляешь, при этом в oncompare обходишь невозможную сортировку по не созданным подъэлементам, потом принудительно все сортируешь.


← →
sergundi   (2004-04-15 14:11) [9]

Тимохов:

Я сделал по другому: перед добавлением новых элементов делаю ListView.SortType := ComCtrls.stNone, а после добавления снова ListView.SortType := ComCtrls.stBoth. Вроде работает. Непонятно только зачем для stNone (только для этого значения!) имя модуля указывать (на соседней машине работает ListView.SortType := stNone)


← →
Reindeer Moss Eater ©   (2004-04-15 14:13) [10]

Влияет порядок модулей в твоем uses.
У меня никакого имени модуля добавлять не надо.


← →
sergundi   (2004-04-15 14:20) [11]

да... Это называется "изучайте матчасть". Всё, на сеновал - и учиться, учиться и еще раз учиться :-)


← →
Тимохов ©   (2004-04-15 14:44) [12]


>  Всё, на сеновал - и учиться, учиться и еще раз учиться
> :-)

чему ?


← →
sergundi   (2004-04-15 14:50) [13]

например, почитать как влияет порядок модулей в uses на работу компилятора со свойствами типов этих модулей



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

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



Память: 0.48 MB
Время: 0.02 c
1-1081941527
Volodya_
2004-04-14 15:18
2004.05.02
Консоль


7-1079121286
Roksolan
2004-03-12 22:54
2004.05.02
Вывод байта в порт


6-1078374290
leosan
2004-03-04 07:24
2004.05.02
Функции преобразования IP адреса в имя компьютера


1-1082222525
SergP
2004-04-17 21:22
2004.05.02
Помогите все-таки с распаковкой сжатой строки!!!!!


9-1069480497
Агент Смит [8]
2003-11-22 08:54
2004.05.02
Текстура из нескольких бмп. OpenGL




   Наверх