Вниз
Скачать: CL | DM;

Сортировка колонки в ListView   Найти похожие ветки 

← →
dDan   (2005-12-05 20:44) [0]

Возникла проблема сортирует но выдает чушь какуюто
Делаю так:
procedure TForm1.ListColumnClick(Sender: TObject; Column: TListColumn);
..........

function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
result:=0;
if strtodatetime(item1.SubItems[0])>strtoint(item2.SubItems[0]) then
Result :=1 else
if strtodatetime(item1.SubItems[0])<strtoint(item2.SubItems[0]) then
Result :=-1;
end;

........
List.CustomSort(@CustomDateSortProc, 0)


Может кто подскажет лучшие методы сортировки чисел


← →
begin...end ©   (2005-12-05 20:59) [1]

> dDan   (05.12.05 20:44)

Функция написана нормально. Только непонятно, почему результат StrToDateTime сравнивается с результатом StrToInt. Как должны быть отсортированы числа?


← →
dDan   (2005-12-05 21:58) [2]

Да просто так функцию назвал по возрастанию должны быть отсортированны


← →
begin...end ©   (2005-12-05 22:05) [3]

> dDan   (05.12.05 21:58) [2]

Так что там, в столбце? Целые числа? Я проверил (только StrToDateTime заменил на StrToInt) -- всё нормально работает. Поскольку у Вас Delphi 7, можно записать код короче (но в uses нужно будет добавить модуль Math):

function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer; stdcall;
begin
 Result := CompareValue(StrToInt(Item1.SubItems[0]), StrToInt(Item2.SubItems[0]))
end


← →
dDan   (2005-12-05 22:31) [4]

Твоя функция вообще отказываеться работать


← →
Германн ©   (2005-12-06 02:04) [5]


> dDan   (05.12.05 20:44)  
>
> Возникла проблема сортирует но выдает чушь какуюто
> Делаю так:
> procedure TForm1.ListColumnClick(Sender: TObject; Column:
>  TListColumn);
> ..........
>
> function CustomDateSortProc(Item1, Item2: TListItem; ParamSort:
>  integer): integer; stdcall;
> begin
> result:=0;
> if strtodatetime(item1.SubItems[0])>strtoint(item2.SubItems[0])
> then
> Result :=1 else
> if strtodatetime(item1.SubItems[0])<strtoint(item2.SubItems[0])
> then
> Result :=-1;
> end;
>
> ........
> List.CustomSort(@CustomDateSortProc, 0)
>
>
> Может кто подскажет лучшие методы сортировки чисел


О каких "числах" ты тут спрашиваешь? О календарных или о математических?

Если о календарных, то тут, имхо присутствует ещё и время, а оно "не вписывается" в сравнениях с integer.


← →
begin...end ©   (2005-12-06 12:27) [6]

> dDan   (05.12.05 22:31) [4]

Значит, в столбце -- не целые цисла.


← →
MU ©   (2005-12-06 15:23) [7]

Если там даты и время(?) в строковом выражении, то, может
function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer; begin
Result := Trunc(
                     StrToDateTime(Item1.SubItems[0]) -
                     StrToDateTime(Item2.SubItems[0])
                     );
end


← →
MU ©   (2005-12-06 15:24) [8]

Извините....
function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer;
begin
Result := Sign(
                     StrToDateTime(Item1.SubItems[0]) -
                     StrToDateTime(Item2.SubItems[0])
                     );
end


← →
dDan   (2005-12-06 20:49) [9]

Да нет там целые числа чего к названию о функции такое внимание :) Вроде разобрался.


← →
begin...end ©   (2005-12-06 21:47) [10]

> dDan   (06.12.05 20:49) [9]
> Да нет там целые числа

А если там целые числа, то [3] должно работать.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
4-1130840334
BFG9k
2005-11-01 13:18
2006.01.08
Передача настроек принтера


5-1120679553
SpyBoy
2005-07-06 23:52
2006.01.08
Разбиение ListBox а


14-1134710833
Pazitron_Brain
2005-12-16 08:27
2006.01.08
Все, что вы хотели знать о спутниковом Интернете


14-1134216383
TStas
2005-12-10 15:06
2006.01.08
Как устроены электронные таблицы?


14-1134454357
WondeRu
2005-12-13 09:12
2006.01.08
Какого самого прикольного Деда Мороза вы видели?




   Наверх