Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка ListView по 2-ой колонке [D7, XP]


Serov_Kiril ©   (2009-11-24 17:35:00) 

На форме находится ListView(1-ая колонка - поставщик,2-ая кол.заказов) Нужно отсортировать ListView по второй колонке,-наибольшее кол.заказов сверху и вниз по уменьшению кол.заказов. Как лучче сделать сортировку по количеству?


Демо   (2009-11-24 21:15:00) [1]


> Serov_Kiril   (24.11.09 18:20) [3]


CustomSortProc - это функция обратного вызова и должна ltrkfhbhjdfnmcz именно так, как описана в справке.

В Help даже пример есть:

function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
  Result := -CompareText(Item1.Caption,Item2.Caption);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.CustomSort(@CustomSortProc, 0);
end;


Сергей М.   (2009-11-24 20:09:00) [2]


> procedure TForm1.ListView1Compare(Sender: TObject; Item1,
>  Item2: TListItem;
>  Data: Integer; var Compare: Integer);


Это что за ахинея ?
Справка для кого писана ?

function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;


MBo   (2009-11-24 19:58:00) [3]

А разве у функции сравнения такой прототип должен быть?


Serov_Kiril   (2009-11-24 18:20:00) [4]

Не работает :( А если установить SortType в stBoth ваще RunTime Error Out of bounds ;(


Serov_Kiril   (2009-11-24 18:07:00) [5]

Разве CustomSort не по алфавиту тогда отсортирует? Мне нужно по наибольшему значению во второй колонке..
Может так:
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
 Data: Integer; var Compare: Integer);
var
n1, n2: integer;
begin
n1 := StrToInt(Item1.SubItems[0]);
n2 := StrToInt(Item2.SubItems[0]);
if n1 > n2 then
  Compare := -1
else if n1 < n2 then
  Compare := 1
else
  Compare := 0;
end;  ???


clickmaker   (2009-11-24 17:41:00) [6]

CustomSort()


Наверх

Титульная страница Поиск, карта сайта Написать письмо