Главная страница
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.021 c
15-1199108732
philin
2007-12-31 16:45
2008.02.03
Windows Mobile


9-1166419019
cvxzcv1231
2006-12-18 08:16
2008.02.03
Шрифт в DelphiX


2-1199427867
Master
2008-01-04 09:24
2008.02.03
Проблемы с рисованием


2-1200012250
Abcdef123
2008-01-11 03:44
2008.02.03
Пробелы знаний DOSa


11-1182779412
max727
2007-06-25 17:50
2008.02.03
KOLComObj