Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.03;
Скачать: CL | DM;

Вниз

Помогите отсортировать 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
15-1198847337
Jeer
2007-12-28 16:08
2008.02.03
С наступающими !


6-1172017429
Ш-К
2007-02-21 03:23
2008.02.03
Свои "контролы" в TWebBrowser.


15-1198740333
Darvin
2007-12-27 10:25
2008.02.03
Запуск русифицированной программы на локализованной Windows


4-1182876317
Malik
2007-06-26 20:45
2008.02.03
Вопрос про TreeView


2-1198340668
Reals
2007-12-22 19:24
2008.02.03
Определить серийный номер материнки (или чипсета)