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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2010, 15:32   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
Вопрос Сортировать при нажатии на заголовок колонки

Сортировка происходит только при нажатии каждый раз на разный заголовок
Код:
var
  Form1: TForm1;
  ColumnToSort: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  LV: TListItem;
begin
  LV := ListView1.Items.Add;
  LV.Caption := 'Gort';
  LV.SubItems.Add('15');

  LV := ListView1.Items.Add;
  LV.Caption := 'Иван';
  LV.SubItems.Add('7');

  LV := ListView1.Items.Add;
  LV.Caption := 'Pop';
  LV.SubItems.Add('-1');

  LV := ListView1.Items.Add;
  LV.Caption := 'Mega';
  LV.SubItems.Add('15');

  LV := ListView1.Items.Add;
  LV.Caption := '!';
  LV.SubItems.Add('0');
end;

procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  ColumnToSort := Column.Index;
  //(Sender as TCustomListView).AlphaSort;
  ListView1.AlphaSort;
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
var
  i: Integer;
begin
  if ColumnToSort = 0 then Compare := CompareText(Item1.Caption, Item2.Caption)
  else
  begin
    i := ColumnToSort - 1;
    Compare := CompareText(Item1.SubItems[i], Item2.SubItems[i]);
  end;
end;
Не соображу как исправить.
Shouldercannon вне форума Ответить с цитированием
Старый 10.03.2011, 10:27   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
Сообщение

Не получается сделать сортировку следующего вида:
по возростанию от En до Ru
!
Gort
Mega
Pop
Валентин
Иван
Константин
по убыванию от Ru до En
Константин
Иван
Валентин
Pop
Mega
Gort
!
по возростанию от -1 до 100
-1
0
7
15
89
100
по убыванию от 100 до -1
100
89
15
7
0
-1
Прошу вашей помощи.

Последний раз редактировалось Shouldercannon; 10.03.2011 в 14:41.
Shouldercannon вне форума Ответить с цитированием
Старый 10.03.2011, 13:56   #3
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

советую вам почитать в гугле "сортировка одномерного массива" думаю если сообразите - поможет.
MeTeOpA вне форума Ответить с цитированием
Старый 10.03.2011, 14:38   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Код:
procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  if FSortKey = Column.Index + 1 then FSortKey := -FSortKey else FSortKey := Column.Index + 1;
  if ListView1.SortType <> stText then ListView1.SortType := stText else ListView1.AlphaSort;
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
var
  N1, N2: Integer;
begin
  if Abs(FSortKey) = 1 then Compare := AnsiCompareText(Item1.Caption, Item2.Caption)
  else
    begin
     N1 := StrToInt(Item1.SubItems[Abs(FSortKey) - 2]);
     N2 := StrToInt(Item2.SubItems[Abs(FSortKey) - 2]);

     if N1 = N2 then Compare := 0 else
     if N1 < N2 then Compare := -1 else Compare := 1
    end;
  Compare := Compare * (FSortKey div Abs(FSortKey));
end;
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ормируется объект размером 30х30 и он должен при нажатии на клавишу,двигаться в 8ми направлениях..а при н Krasoto4ka Помощь студентам 0 22.05.2010 17:41
При нажатии выполнить Ctrl+F Shouldercannon Общие вопросы Delphi 10 04.02.2010 16:05
при нажатии на кнопку Delete vik85 Помощь студентам 0 20.12.2009 20:34
Картинка при нажатии Marsik JavaScript, Ajax 10 16.10.2009 13:11
При нажатии F3 переместить курсор valerij Microsoft Office Excel 6 20.06.2009 15:42