码迷,mamicode.com
首页 > 其他好文 > 详细

树形控件数据刷新前,保存及还原展开和选中状态

时间:2017-05-25 14:37:17      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:and   treenode   save   node   tree   item   tno   extc   fast   

void __fastcall TMainFrm::SaveExpandedNodes(TTreeView *ATree,
std::map<AnsiString, Pointer>& g_TempList)
{
TTreeNode *ANode;
TTreeNode *ANextNode;
TTreeNodes *ANodes;
ANodes = ATree->Items;
g_TempList.clear();
Cardinal FlagVal = 0;
bool Expaned1 = false;
bool Selected1 = false;
ANode = ANodes->GetFirstNode();
while (ANode)
{
Expaned1 = ANode->Expanded;
Selected1 = ANode->Selected;
if (Expaned1 || Selected1)
{
FlagVal = Selected1 << 1;
FlagVal = FlagVal | Expaned1;
AnsiString S = ANode->Text;
g_TempList[S] = Pointer(FlagVal);
}
ANextNode = ANode->getFirstChild();
while (ANextNode)
{
bool Expaned = ANextNode->Expanded;
bool Selected = ANextNode->Selected;
if (Expaned || Selected) {
FlagVal = Selected << 1;
FlagVal = FlagVal | Expaned;
AnsiString S = ANode->Text + ANextNode->Text;
g_TempList[S] = Pointer(FlagVal);
}
ANextNode = ANode->GetNextChild(ANextNode);
}
ANode = ANode->getNextSibling();
}
}

void __fastcall TMainFrm::ExpandNodes(TTreeView *ATree, std::map<AnsiString,
Pointer>& g_TempList)
{
TTreeNodes *ANodes = ATree->Items;
TTreeNode *ANode = ANodes->GetFirstNode();
TTreeNode *ANextNode;
AnsiString S;
Pointer P;
Cardinal FlagVal;
bool Expand, Selected;

while (ANode)
{
S = ANode->Text;
P = g_TempList[S];
if (P != 0)
{
FlagVal = Cardinal(P);
Expand = FlagVal & 1;
Selected = (FlagVal >> 1) & 1;

if (Expand)
{
ANode->Expand(true);
}
if (Selected)
{
ANode->Selected = true;
}
}
ANextNode = ANode->getFirstChild();
while (ANextNode)
{
S = ANextNode->Text;
P = g_TempList[ANode->Text + S];
if (P != 0)
{
FlagVal = Cardinal(P);
Expand = FlagVal & 1;
Selected = (FlagVal >> 1) & 1;
if (Expand)
{
ANextNode->Expand(true);
}
if (Selected)
{
ANextNode->Selected = true;
}
}
ANextNode = ANode->GetNextChild(ANextNode);
}
ANode = ANode->getNextSibling();
}
}

树形控件数据刷新前,保存及还原展开和选中状态

标签:and   treenode   save   node   tree   item   tno   extc   fast   

原文地址:http://www.cnblogs.com/liujicai/p/6903394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!