Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 10:36   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Сортировка данных в ListView

Если в Caption ListView есть < Новое подключение >, то оно всегда остаётся внизу при любом направлении сортировки. А если < Новое подключение > находится в SubItems, то как в этом случае будет выглядеть код сортировки?
Вложения
Тип файла: txt code.txt (3.7 Кб, 132 просмотров)
Тип файла: rar Sorting.rar (23.4 Кб, 18 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 05.07.2011, 12:45   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Лучше напиши конкретно, что помещаешь в SubItem-ы и какой хочешь вид получить в разных режимах сортировки. А так телепатию напрягать нужно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.07.2011, 13:27   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Лучше напиши конкретно, что помещаешь в SubItem-ы и какой хочешь вид получить в разных режимах сортировки. А так телепатию напрягать нужно
Спрашивается для кого я выложил исходник.
Вложения
Тип файла: zip Project1.zip (278.1 Кб, 11 просмотров)

Последний раз редактировалось Shouldercannon; 05.07.2011 в 13:31.
Shouldercannon вне форума Ответить с цитированием
Старый 05.07.2011, 13:39   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Еще раз просмотрел вложение.
Ей богу, Shouldercannon, не понятно, что нужно то? Как в итоге должны отсортироваться строки? Я так понял, что вам нучно, чтобы < Новое подключение > всегда оставалось снизу при любом направлении сортировки.

Последний раз редактировалось Sibedir; 05.07.2011 в 14:02.
Sibedir вне форума Ответить с цитированием
Старый 05.07.2011, 14:09   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TFormServerInfo.LVServersCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var s1,s2: String;
begin
  Compare := 0;
  case SortColumn of
  0: if SortOrder = 0 then Compare := CompareText(Item1.Caption, Item2.Caption)
                      else Compare := -CompareText(Item1.Caption, Item2.Caption);
  1: begin
       s1:=Item1.SubItems[0]; if s1='' then s1:='-1';
       s2:=Item2.SubItems[0]; if s2='' then s2:='-1';
       if StrToInt(s1)>StrToInt(s2) then Compare:=1
       else if StrToInt(s1)<StrToInt(s2) then Compare:=-1;
       if SortOrder = 1 then Compare:=-Compare;
     end;
  2: if SortOrder = 0 then Compare := CompareText(Item1.SubItems[1], Item2.SubItems[1])
                      else Compare := -CompareText(Item1.SubItems[1], Item2.SubItems[1]);
  3: begin
       s1:=Item1.SubItems[2]; if s1='' then s1:='-1';
       s2:=Item2.SubItems[2]; if s2='' then s2:='-1';
       if StrToFloat(s1)>StrToFloat(s2) then Compare:=1
       else if StrToFloat(s1)<StrToFloat(s2) then Compare:=-1;
       if SortOrder = 1 then Compare:=-Compare;
     end;
  end;
end;
Добавил для SortColumn=3 нужно брать Item1.SubItems[2]
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 05.07.2011 в 14:40.
Аватар вне форума Ответить с цитированием
Старый 05.07.2011, 15:11   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Игнорирование сортировки < Новое подключение > происходит благодяря
Код:
    if Item1.SubItems[0] = '' then Exit;
    if Item2.SubItems[0] = '' then Exit;
Если < Новое подключение > будет в SubItem, а не Caption, тогда
Код:
    if Item1.SubItems[1] = '' then Exit;
    if Item2.SubItems[1] = '' then Exit;

Последний раз редактировалось Shouldercannon; 05.07.2011 в 15:51.
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ListView и потоком данных piksel111 Общие вопросы Delphi 4 18.04.2011 01:48
получение данных из listview bulldog5293 Работа с сетью в Delphi 0 03.09.2010 23:38
Сортировка и цвет строк в ListView zver777 Общие вопросы Delphi 1 26.03.2010 22:24
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30
ListView сортировка Viten2 Компоненты Delphi 6 25.03.2007 00:28