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

Вниз

Помогите отсортировать ListView не по caption   Найти похожие ветки 

 
hero   (2008-01-10 07:18) [0]

мне нужно отсортировать список скажем по 3-ей колоке!! КАК?
ни как не могу разобраться с TLVCompare.

Подскажите ,кто сталкивался с этой проблем.


 
{RASkov} ©   (2008-01-10 07:26) [1]

> [0] hero   (10.01.08 07:18)

http://www.yandex.ru/yandsearch?clid=9582&text=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0+TListView


 
hero   (2008-01-10 10:28) [2]

дело в том что событе OnCompare сразу после item.add таким образом item.subitems = "" поэтому следующий код вызывает ошибку

procedure TForm1.ListView1Compare(Sender: TObject; Item1,
 Item2: TListItem; Data: Integer; var Compare: Integer);
var
 n1, n2: integer;
begin
 n1 := StrToInt(Item1.SubItems[2]);
 n2 := StrToInt(Item2.SubItems[2]);
 if n1 > n2 then
   Compare := -1
 else if n1 < n2 then
   Compare := 1
 else
   Compare := 0;
end;



есть ли другой выход?


 
@!!ex ©   (2008-01-10 10:30) [3]

> [2] hero   (10.01.08 10:28)

А зачем в число переводить?
"98">"15"
98>15
так нафиг перевод?


 
авыф   (2008-01-10 10:46) [4]

сортировать после заполнения всего списка


 
morgoth   (2008-01-10 11:37) [5]

> [3]
ты не поверишь, но "98" будет больше "115" ))), вот затем и перевод


 
@!!ex ©   (2008-01-10 11:55) [6]

> [5] morgoth   (10.01.08 11:37)

упс. действительно. тогда проверку на пустое поле надо вставить.


 
Сергей М. ©   (2008-01-10 12:45) [7]


> hero   (10.01.08 10:28) [2]


Либо запускай сортировку после заполнения списка либо проверяй строку на непустое значение, прежде чем конвертить ее в число.

Да и нафих нужна эта конверсия, если соответствующее строке число можно хранить в TListItem.Data ?


 
hero   (2008-01-10 13:30) [8]

дело не в переводе в числа .. там .. или обратно,
я проверяю фунцией lstrcmp(PChar(string1), PChar(string2));

Как запустить проверку после заполнения всех данных ???
после каждого добавления делать  :
 ListView1.CustomSort(nil, 0); ?!?!?!?!

при этом ListView1.SortType := stNone; ???


 
Сергей М. ©   (2008-01-10 13:37) [9]


> hero   (10.01.08 13:30) [8]


> после каждого добавления делать  :
>  ListView1.CustomSort(nil, 0); ?!?!?!?!
>
> при этом ListView1.SortType := stNone; ???
> <Цитата>
>
>  


Угу. Если объем списка сравнительно невелик. Иначе тормоза при  таком подходе неизбежны.



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

Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.05 c
15-1198740333
Darvin
2007-12-27 10:25
2008.02.03
Запуск русифицированной программы на локализованной Windows


2-1200240167
Steep
2008-01-13 19:02
2008.02.03
TextFile, String - Delete


2-1199966793
Mixail
2008-01-10 15:06
2008.02.03
Сохранение динамического массива в файл


15-1198561231
mrFreeman2007
2007-12-25 08:40
2008.02.03
Как устанавливать компоненты?


2-1199426201
Alexandr Malygin
2008-01-04 08:56
2008.02.03
не отображается label на появляющейся на некоторое время форме





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский