Главная страница
    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.041 c
2-1199628881
savyhinst
2008-01-06 17:14
2008.02.03
class function whatAshnyaga?


2-1199519421
Kley
2008-01-05 10:50
2008.02.03
Вывод данных таблицы в QRmemo


3-1190772410
costya
2007-09-26 06:06
2008.02.03
Ошибка StackOverflow в FIBDataSet


15-1198671913
vajo
2007-12-26 15:25
2008.02.03
Win Vista Busines нормально работатет со SCSI дисками?


15-1198146235
antonn (work)
2007-12-20 13:23
2008.02.03
хочу raid1





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