Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: 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 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
14-1081489551
passlight
2004-04-09 09:45
2004.05.02
Горе : не успел зарегистрировать домен


1-1081921535
Laymer
2004-04-14 09:45
2004.05.02
Даты


3-1081148071
Алексей
2004-04-05 10:54
2004.05.02
EHLib Grid


6-1078467416
IGORYOK
2004-03-05 09:16
2004.05.02
Скопировать с одного сервера на другой


3-1080867791
kay
2004-04-02 05:03
2004.05.02
Table1, DBGrid1, значения в верхнем и нижнем регистрах.