Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 60

Нужно отсортировать Нужно отсортировать ListView

31.08.2011, 13:22. Показов 1301. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прямо беда какая-то...
Делаю по классике... и пример готовый в наличии есть, а у меня не работает. Вот мой код:

сверху объявил:
Delphi
1
2
3
4
5
 // sorting
  LastSortedColumn: integer;
  Ascending: boolean;
function SortByColumn(Item1, Item2: TListItem; Data: integer): integer stdcall;
  // sorting
на форм-креат присвоил:
Delphi
1
2
  LastSortedColumn := -1;
  Ascending := True;
и далее:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function SortByColumn(Item1, Item2: TListItem; Data: integer): integer; stdcall;
  begin
    if Data = 0 then
      Result := AnsiCompareText(Item1.Caption, Item2.Caption)
    else
      Result := AnsiCompareText(Item1.SubItems[Data-1],
                                Item2.SubItems[Data-1]);
    if not Ascending then Result := -Result;
  end;
 
procedure TfrmUserMain.lviABContactsColumnClick(Sender: TObject; Column: TListColumn);
begin
  if Column.Index = LastSortedColumn then
    Ascending := not Ascending
  else
    LastSortedColumn := Column.Index;
 
  lviABContacts.CustomSort(@SortByColumn, Column.Index);
end;
Это адресная книга. Заполняется из списка на OnData.
Помогите плиз.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.08.2011, 13:22
Ответы с готовыми решениями:

Нужно отсортировать строки по убыванию согласно данным в последнем столбце
Есть проект созданный в лазарусе нужно отсортировать строки по убыванию согласно данным в последнем столбце. Перепробовал кучу вариантов,...

даны 2 последовательности в файлах, в двух разных, нужно их обьединить и отсортировать по возрастанию. Но нужно сделать прогу с помошью указателей
вот текст проги которую я сделал, но без указателей. переделайте пожалуйста #include<fstream.h> #include<iostream.h> ...

Нужно, импортировать из файла в массив 16 значений, таких файлов много, вот нужно импортировать и отсортировать по возрастанию
что то у меня не получаеться Program abli; var a: file of integer; i: byte; mas: array of integer; b:array of integer; ...

3
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 60
31.08.2011, 13:32  [ТС]
Еще 1 момент:
в примере, который у меня есть все работает.
У меня же не происходит вызова функции (я трассировал - она и не начинает работать). Почему?
Delphi
1
2
3
4
5
6
7
8
9
function SortByColumn(Item1, Item2: TListItem; Data: integer): integer; stdcall;
  begin
    if Data = 0 then
      Result := AnsiCompareText(Item1.Caption, Item2.Caption)
    else
      Result := AnsiCompareText(Item1.SubItems[Data-1],
                                Item2.SubItems[Data-1]);
    if not Ascending then Result := -Result;
  end;
0
0 / 0 / 0
Регистрация: 07.02.2010
Сообщений: 26
31.08.2011, 13:45
Не знаю, каким примером ты пользуешься, попробуй вот это - у меня все работает:

Один в один переписывай код и вперед на мины!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
   var
 ix: Integer;
begin
 if ColumnToSort = 0 then
   Compare := CompareText(Item1.Caption,Item2.Caption)
 else begin
  ix := ColumnToSort - 1;
  Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
 end;
 
end;
 
procedure TForm.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin
   ColumnToSort := Column.Index;
 (Sender as TCustomListView).AlphaSort;
 
end;
Удачи!
0
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 60
31.08.2011, 14:32  [ТС]
В том-то и беда...
Сделал, как ты сказал. Не отрабатывает проца:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TfrmUserMain.lviABContactsCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
   var
 ix: Integer;
begin
 if ColumnToSort = 0 then
   Compare := CompareText(Item1.Caption,Item2.Caption)
 else begin
  ix := ColumnToSort - 1;
  Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
 end;
 
end;
Why?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2011, 14:32
Помогаю со студенческими работами здесь

нужно отсортировать массив
1. Оценки студентов. Записать из файла в двумерный массив информацию об оценках каждого из N студентов группы по тому или иному предмету...

Нужно найти и отсортировать
Помогите с этим Надо найти похожие слова и их страницы и отсортировать их по алфавиту #include <iostream> #include...

Нужно отсортировать информацию
Задание: в программе есть таблица DBGrid1. Условно, в ней 3 колонки: №маршрута, №автобуса и конечная станция. 1)Нужно отсортировать...

Нужно отсортировать данные из БД
Подскажите как "отсортировать" данные из БД. Есть select, в него загружаются данные из БД. Загружаю в optgroup(категории) и в option...

Нужно отсортировать матрицу
Нужно отсортировать элементы выше гл. диагонали по убыванию как показано на картинке (т. е. по нормали к главной диагонали), а ниже этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru