Как отсортировать TListView ???
От: DreamMaster Россия http://www.e-portal.ru
Дата: 30.01.04 05:52
Оценка:
Подскажите, пожалуйста, как отсортировать TListView. Все перепробовал — результата никакого... Буду признателен любым рекомендациям.
вот как я делаю сортировку: (получается полная белиберда, хотя я думаю, что все делаю правильно)


procedure TForm1.ListView4ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  ListView_sorting(false, ListView4, Column.Index);
end;

procedure TForm1.ListView_sorting(Down:boolean;var ListView:TListView; column: integer);
Var Skach,m,n:integer;
    St:boolean;
    Tmp:TListItem;
begin
  if(column=0) then exit; //колонка с порядковыми номерами
  dec(column);

  Skach:=ListView.Items.Count-1;
  While Skach>0 do
  begin
    Skach:=Skach div 2;
    repeat
      St:=True;
      for m:=0 to ListView.Items.Count-1-Skach do
      begin
        n:=m+Skach;
        if ( Down and (ListView.Items.Item[n].SubItems[column]<ListView.Items.Item[m].SubItems[column]) )
        or ( (not Down) and (ListView.Items.Item[n].SubItems[column]>ListView.Items.Item[m].SubItems[column]) ) then
        begin
          Tmp:=ListView.Items.Item[m];
          ListView.Items.Item[m]:=ListView.Items.Item[n];
          ListView.Items.Item[n]:=Tmp;
          St:=False;
        end;
      end;
    until St;
  end;
end;
---------
С уважением, DreamMaster
Re: Как отсортировать TListView ???
От: Витал Россия http://www.supervital.narod.ru
Дата: 30.01.04 07:12
Оценка: 3 (1)
Здравствуйте, DreamMaster, Вы писали:

DM>Подскажите, пожалуйста, как отсортировать TListView. Все перепробовал — результата никакого... Буду признателен любым рекомендациям.

DM>вот как я делаю сортировку: (получается полная белиберда, хотя я думаю, что все делаю правильно)


Вожможно событие OnCompare поможет.
.....
ColumnToSort: integer;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
   ColumnToSort := 1;
end;

procedure TForm1.ListView4ColumnClick(Sender: TObject; Column: TListColumn);
begin
  if Abs(ColumnToSort-1) = Abs(Column.Index) then ColumnToSort := -1 * ColumnToSort else ColumnToSort := Column.Index + 1;
  TCustomListView(Sender).AlphaSort;
end;

procedure TForm1.ListView4Compare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var
   Col: integer;
begin
  Col := Abs(ColumnToSort) - 1;
  if Col = 0 then begin
         // в первом столбце у меня числа
     Compare := CompareValue(StrToInt(Item1.Caption), StrToInt(Item2.Caption)); 
  end else if Col = 1 then begin
            // здесь у меня дата
     Compare := CompareDateTime(StrToDateTime(Item1.SubItems[Col - 1]), StrToDateTime(Item2.SubItems[Col - 1]));
  end else begin
            // ну а тут всякий текст
     Compare := CompareText(Item1.SubItems[Col - 1],Item2.SubItems[Col - 1]);
  end;
  if ColumnToSort < 0 then Compare := -1 * Compare;
end;
... << RSDN@Home 1.1.3 beta 1 >>
Re[2]: Всмысле?
От: DreamMaster Россия http://www.e-portal.ru
Дата: 30.01.04 09:20
Оценка:
---------
С уважением, DreamMaster
В прямом.
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.01.04 10:03
Оценка: :)
Ты код читал?
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: В прямом.
От: DreamMaster Россия http://www.e-portal.ru
Дата: 30.01.04 10:21
Оценка:
S>Ты код читал?

??? что ты хочешь этим сказать?
---------
С уважением, DreamMaster
Re[2]: В прямом.
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.01.04 11:11
Оценка:
Здравствуйте, DreamMaster, Вы писали:
Re: Как отсортировать TListView ???
Автор: Витал
Дата: 30.01.04

Что там тебе написали код, который решает твою проблему. Нет никакого скрытого смысла. Бери и пользуйся.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: В прямом.
От: Leonid Troyanovsky  
Дата: 30.01.04 11:26
Оценка:
Здравствуйте, DreamMaster, Вы писали:

S>>Ты код читал?


DM>??? что ты хочешь этим сказать?


В смысле, что пора спуститья на землю и, засучив рукава, переваривать код by Vital, пытаясь накормить им компилятор. В случае же возникновения вопросов сверяться с хелпом: OnColumnClick, AlphaSort, OnCompare, CompareText example.

Ну, а если ничего не получается, излагаешь обнаруженные трудности простым и понятным языком: Как правильно задавать вопросы.

Кроме того, "Тему" обычно не меняют, если, конечно, обсуждение не сильно от нее отошло.

Кстати, на "уваж.", IMHO, не стоит экономить
--
С уважением, LVT
Re[2]: В прямом.
От: DreamMaster Россия http://www.e-portal.ru
Дата: 02.02.04 04:38
Оценка:
Пасибки огромное! Помогли очени сильно. Извиняюсь, что тупил — просто загружен работой сильно.
---------
С уважением, DreamMaster
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.