Tips.41 | C++Builder/Windowsプログラミング |
リストビューをカラムでソートする | |
ListViewのvsReportスタイルで、カラムバー(?)をクリックしてソートする方法を示します。 #define COL_COUNT 5 void __fastcall TForm1::ListViewColumnClick(TObject *Sender, TListColumn *Column) { static int houkou[] = { 0, 0, 0, 0, 0 }; //カラムの数だけ用意する。 ListView->CustomSort(NULL, Column->Index + houkou[Column->Index]* COL_COUNT; } void __fastcall TForm1::ListViewCompare(TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare) { int muki = 1; if ( Data >= COL_COUNT ) { muki = -1; //降順なら結果を反転させる。 Data -= COL_COUNT; } //もし、アイコンの種類によって別々にソートするなら //たとえばディレクトリとファイル等。 //ImageIndex = 0 ... ディレクトリ //ImageIndex = 1 ... ファイル if ( Item1->ImageIndex != Item2->ImageIndex ) { return Item1->ImageIndex - Item2->ImageIndex ; } // // 同じ種類同士なら AnsiString Left = (Data == 0)? Item1->Caption:Item1->SubItems->Strings[Data-1]; AnsiString Right = (Data == 0)? Item2->Caption:Item2->SubItems->Strings[Data-1]; return muki * Left.AnsiStringIC( Right ); } |
|
戻る | [参照 |