zoukankan      html  css  js  c++  java
  • 树形控件数据刷新前,保存及还原展开和选中状态

    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();
    }
    }

  • 相关阅读:
    【Angular专题】 (3)装饰器decorator,一块语法糖
    【响应式编程的思维艺术】 (1)Rxjs专题学习计划
    jmeter性能测试jpgc的安装(一)
    DDMS连接夜神模拟器无法识别进程解决办法(八)
    性能测试loadrunner(五)
    性能测试loadrunner(四)
    性能测试之loadrunner(三)
    性能测试之loadrunner(二)
    性能测试概念(一)
    Fiddler之插件安装Willow(五)
  • 原文地址:https://www.cnblogs.com/liujicai/p/6903394.html
Copyright © 2011-2022 走看看