|
|
||||
Tips > |
|||||
TreeView の OnCompare でソート |
更新 : 2010/06/13 |
||||
|
|
||
解説: TreeView はちょっとやっかいなコンポーネントです。でも慣れるには、とにかく使ってみるのがいいです。今回は、TreeView に挿入したアイテムを並び替えてみます。 並び替え(ソート)は、データの追加、削除を繰り返したため、データが見づらくなったり、探しづらくなった時などに威力を発揮します。 いろいろな場面で使うことが多いので、覚えておくと役立つテクニックです。 使用例: 以下の例では、Button1 をクリックすると TreeView1 のアイテムがソートされます。 コンポーネントとしては TreeView, Button を適当に配置します。 プロパティの設定で、TreeView1 の項目に d, a, g を作成して、a のサブアイテムに 3, 2 を追加しておきます(このとおりでなくも大丈夫なので、適宜アレンジしてください)。 TreeView1 の OnCompare イベントハンドラに AnsiCompareText 関数を記述しておきます。 この関数は、大文字と小文字を区別しないで第一引数と第二引数を比較してくれます。 Button1 の OnClick イベントには項目でソートができるように、SortType プロパティに stText を設定しておきます。 アプリケーションを起動して、Button1 をクリックすると TreeView1 のアイテムが昇順に並び変わります。 //------------------------------------------------------------------- void __fastcall TForm1::TreeView1Compare(TObject *Sender, TTreeNode *Node1, TTreeNode *Node2, int Data, int &Compare) { // AnsiComparetext は Node1 < Node2 なら 0 より小さい値、 // Node1 > Node2 なら 0 より大きな値、Node1 = Node2 なら 0 を返します。 Compare = AnsiCompareText(Node1->Text, Node2->Text); } //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // SortType プロパティは、ツリービューのノードを自動的にソートするかどうかと、 // どのような状態のときにソートするかを決めます。 TreeView1->SortType = stText; // 項目をソートする } //------------------------------------------------------------------- |