c++ builder TTreeView customSort 实现 自定义排序

简介: //---------------------------------------------------------------------------int __stdcall mySort(long n1,long n2, long Reverse){ TTreeNode *Node...
//---------------------------------------------------------------------------
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)<StrToInt(Node2->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)<StrToInt(Node2->Text))
return 1;
else
return 0;
}
else//非一级结点按升序
{
if(StrToInt(Node1->Text)<StrToInt(Node2->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值入回调函数第三个参数
*/
}

 

参考http://hi.baidu.com/pwf%D0%A1%CE%C0/blog/item/ebcda427c6f49d0a908f9d69.html

相关文章
|
23天前
|
存储 算法 数据库
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
103 0
|
29天前
|
存储 缓存 并行计算
C/C++ 数据结构设计与应用(二):自定义数据结构的设计 (Design of Custom Data Structures)
C/C++ 数据结构设计与应用(二):自定义数据结构的设计 (Design of Custom Data Structures)
51 0
|
算法 程序员 C语言
【C++ 迭代器】深入探讨 C++ 迭代器:标准与自定义容器中的 begin() 和 cbegin()
【C++ 迭代器】深入探讨 C++ 迭代器:标准与自定义容器中的 begin() 和 cbegin()
46 0
|
存储 算法 程序员
【C/C++ 线性表 简介】C/C++中的线性表探索:从标准库到自定义实现
【C/C++ 线性表 简介】C/C++中的线性表探索:从标准库到自定义实现
24 0
|
25天前
|
存储 安全 数据库连接
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
82 0
|
1月前
|
存储 C++
C++语言中数据类型-自定义类
C++语言中数据类型-自定义类
10 0
|
1月前
|
算法 搜索推荐 大数据
在C++语言中排序、查找和算法的作用
在C++语言中排序、查找和算法的作用
10 0
|
3月前
|
Java Go C++
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
33 0
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
|
3月前
|
Java Go 人工智能
Java每日一练(20230502) BST公共祖先、随机分组、K个一组翻转链表
Java每日一练(20230502) BST公共祖先、随机分组、K个一组翻转链表
25 0
Java每日一练(20230502) BST公共祖先、随机分组、K个一组翻转链表
|
3月前
|
Java Go C++
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
36 0
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数