Delphi Tips 
-----------------------------

0021  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/08 osamu 編集
TListViewで列を指定してソート

以下のようにすると簡単にできます。

// ソートに使うColumnを表す。
var ListViewSort:Integer;

// Formのメンバ変数にするのがいいとおもいます。
// 0でソートしない。
// ゼロ以外ならば、Abs(ListViewSort)コラムをキーにする
// 正負で正・逆順ソート


// 汎用的に使える比較ルーチン
procedure TMainForm.ListViewCompare(Sender: TObject; Item1, Item2:
TListItem; Data: Integer; var Compare: Integer);
begin
    case ListViewSort of
    0:      Compare:=0;
    1,-1:   Compare:=AnsiCompareStr(Item1.Caption,Item2.Caption);
    else    Compare:=AnsiCompareStr(Item1.SubItems[Abs(ListViewSort)-2],
                                    Item2.SubItems[Abs(ListViewSort)-2]);
    end;
    if ListViewSort<0 then Compare:=-Compare;
end;

// コラムヘッダがクリックされたらソートしなおす。
procedure TMainForm.ListViewColumnClick(Sender: TObject; Column:
TListColumn);
begin
    if Abs(ListViewSort)=Column.Index+1 then begin
        ListViewSort:=-ListViewSort;
    end else begin
        ListViewSort:=Column.Index+1;
    end;
    ListView.SortType:=stNone;
    ListView.SortType:=stData;
end;
参照: [Delphi-ML:11526] <Win95> <コンポーネント >

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp