| 
| 
 | Вопрос # 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);varn1, n2: integer;beginn1 := StrToInt(Item1.SubItems[2]);n2 := StrToInt(Item2.SubItems[2]);if n1 > n2 then   Compare := -1else if n1 < n2 then   Compare := 1else   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;varn1, n2: cardinal;beginn1 := StrToInt(Item1.SubItems[2]);n2 := StrToInt(Item2.SubItems[2]);if n1 > n2 then   Result := -1else if n1 < n2 then   Result := 1else   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, Спс тебе ты мне очень помог ! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |