|
Вопрос # 1 855/ вопрос открыт / |
|
Здравствуйте!
Помогите пожалуйста с TListView. Надо сделать сортировку на Листе! Я знаю что в самом компоненте есть это фунциа но он толка для итемов. А мне надо сделать это ортировку на Субитемов. Как это сделать дайте совет? Заранее спасибо!!!
Например я хочу сделать так :
________________________________________
| 1-column | 2-column | 3-column |
|тут числи | тут дата | а тут текст |<-- Кнопки сортов
|это итемы |это уже субитем| это тож субитем |
|-------------|-------------------|----------------------|
| 1 | 12.15.2008 | asd |
| 2 | 11.15.2008 | dsa |
|-------------|-------------------|----------------------|
Кажется вы меня поняли.
 |
Вопрос задал: ElektrinO (статус: Посетитель)
Вопрос отправлен: 27 августа 2008, 18:29
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, ElektrinO!
Если я вас правильно понял, вы пытаетесь сортировать по колонкам и у вас TListView имеет стиль vsReport, тогда держите в Приложении пример.
Приложение: Переключить в обычный режим-
-
-
- procedure(Sender: TObject; Item1, Item2: TListItem;Data: Integer; var Compare: Integer) of object;
-
-
- procedure TForm1.ListView1Compare(Sender: TObject; Item1,
- Item2: TListItem; Data: Integer; var Compare: Integer);
- var
- n1, n2: integer;
- begin
- n1 := StrToInt(Item1.SubItems[2]);
- n2 := StrToInt(Item2.SubItems[2]);
- if n1 > n2 then
- Compare := -1
- else if n1 < n2 then
- Compare := 1
- else
- Compare := 0;
- end;
-
- ListView1.SortType := stBoth;
-
- ListView1.SortType := stBoth;
- ListView1.SortType := stNone;
-
- ListView1.CustomSort(nil, 0);
-
-
- function ByFourth(Item1, Item2: TListItem; Data: integer):
- integer; stdcall;
- var
- n1, n2: cardinal;
- begin
- n1 := StrToInt(Item1.SubItems[2]);
- n2 := StrToInt(Item2.SubItems[2]);
- if n1 > n2 then
- Result := -1
- else if n1 < n2 then
- Result := 1
- else
- Result := 0;
- end;
-
- ListView1.CustomSort(@ByFourth, 0);
-
-
-
- unit SortedListView;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ComCtrls;
-
- type
- TSortedListView = class(TListView)
- private
- FSortColumn: Integer;
- procedure SetSortColumn(const Value: Integer);
- procedure SortedListViewCompare(Sender: TObject; Item1, Item2: TListItem;
- Data: Integer; var Compare: Integer);
- procedure SortedListViewColumnClick(Sender: TObject; Column: TListColumn);
- { Private declarations }
- protected
- { Protected declarations }
- public
- constructor Create(AOwner: TComponent); override;
- { Public declarations }
- published
- { Published declarations }
- property SortColumn: Integer read FSortColumn write SetSortColumn;
- end;
-
- implementation
-
- {==============================================================================}
- { TSortedListView }
- {==============================================================================}
- constructor TSortedListView.Create(AOwner: TComponent);
- begin
- inherited;
-
- OnColumnClick := SortedListViewColumnClick;
- OnCompare := SortedListViewCompare;
- end;
- {==============================================================================}
-
- procedure TSortedListView.SetSortColumn(const Value: Integer);
- begin
- FSortColumn := Value;
- AlphaSort;
- end;
- {==============================================================================}
-
- procedure TSortedListView.SortedListViewColumnClick(Sender: TObject;
- Column: TListColumn);
- begin
- SortColumn := Column.Index;
- end;
- {==============================================================================}
-
- procedure TSortedListView.SortedListViewCompare(Sender: TObject;
- Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
- begin
- if SortColumn = 0 then
- Compare := CompareText(Item1.Caption, Item2.Caption)
- else
- Compare := CompareText(Item1.SubItems[SortColumn - 1], Item2.SubItems[SortColumn - 1]);
- end;
-
- end.
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 27 августа 2008, 19:03
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 1 сентября 2008, 09:54; участников в обсуждении: 3.
|
Вадим К (статус: Академик), 27 августа 2008, 18:40 [#1]:
то есть сортировку по колонкам?, ну как к примеру в проводнике
Галочка "подтверждения прочтения" - вселенское зло.
|
|
ElektrinO (статус: Посетитель), 31 августа 2008, 14:09 [#2]:
Feniks, Спс тебе ты мне очень помог !
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|