Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Проблема с сортировкой 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
1-1081740909
John
2004-04-12 07:35
2004.05.02
Rave Report


4-1078502396
denkop
2004-03-05 18:59
2004.05.02
как узнать кто послал wm_close?


1-1082306540
Just_
2004-04-18 20:42
2004.05.02
Поиск и замена по правилу


1-1082001109
gweep
2004-04-15 07:51
2004.05.02
Explorer и Delphi


14-1081510366
Lexer
2004-04-09 15:32
2004.05.02
Может есть здесь кто из Харькова





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский