//--------------------------------------------------------------------------- int __stdcall mySort(long n1,long n2, long Reverse) { TTreeNode *Node1=(TTreeNode*)n1; TTreeNode *Node2=(TTreeNode*)n2; //Reverse参数用来实现更加复杂的操作 //这里当Reverse=1时只排第一层为 // Reverse=0时排所有层 if(Reverse==1) { if(Node1->Level==1)//第一级结点按降序 { if(StrToInt(Node1->Text)>StrToInt(Node2->Text)) { return -1; } else if(StrToInt(Node1->Text)Text)) return 1; else return 0; } } else if(Reverse==0) { if(Node1->Level==1)//第一级结点按降序 { if(StrToInt(Node1->Text)>StrToInt(Node2->Text)) { return -1; } else if(StrToInt(Node1->Text) Text)) return 1; else return 0; } else//非一级结点按升序 { if(StrToInt(Node1->Text) Text)) { return -1; } else if(StrToInt(Node1->Text)>StrToInt(Node2->Text)) return 1; else return 0; } } return 0; //其余不排序 } void __fastcall TForm1::btn_SortClick(TObject *Sender) { TreeView1->CustomSort (mySort,0); //排序所有层 // TreeView1->CustomSort (mySort,1); //只排序第一层 /* CustomSort(PFNTVCOMPARE SortProc, int Data; bool ARecurse = true) 参数Data值入回调函数第三个参数 */ }
参考