TTreeView移动节点和图标

来源:互联网 发布:潮男装品牌淘宝 编辑:程序博客网 时间:2024/05/23 10:44
void UpDownNode(TTreeNode * node,bool up,int level){    TTreeNode *TargetNode;  if (level!=-1) //同级间移动  {    if (node != NULL) //检查是否有选中节点 如果有则做上移操作    {      if (up) //上移      {        if (node->GetPrev() != NULL)        {          TargetNode = node->GetPrev();          while (TargetNode->Level != level)          {            if (TargetNode->GetPrev()==NULL )              break;            else              TargetNode = TargetNode->GetPrev();          }          if (TargetNode != NULL)          {            if (TargetNode->Level ==level)            {              if (node->getPrevSibling() != NULL)  //检查是否有同级前节点,如果有做上移操作              {                if (node->getPrevSibling() != NULL)                  node->MoveTo(TargetNode,naInsert);                else                  node->MoveTo(TargetNode,naAddFirst);              }                else                  node->MoveTo(TargetNode,naAdd);            }          }        }      }      else //下移      {        if (node->GetNext() != NULL)        {          TargetNode = node->GetNext();          while (TargetNode->Level != level)          {            if (TargetNode->GetNext()==NULL)              break;            else              TargetNode = TargetNode->GetNext();          }          if (TargetNode != NULL)          {            if (TargetNode->Level == level)            {              if (node->getNextSibling() != NULL) //检查是否有同级下节点,假如有作下移操作              {                if (TargetNode->getNextSibling() != NULL)                  node->MoveTo(TargetNode->getNextSibling(),naInsert);                else                  node->MoveTo(TargetNode,naAdd);              }              else                node->MoveTo(TargetNode,naInsert);            }          }        }      }   }  }  else //容许跨级移动  {    if (node != NULL) //检查是否有选中节点 假如有则做上移操作    {      if (up) //上移      {        if (node->GetPrev() != NULL)        {          TargetNode = node->GetPrev();          if (TargetNode != NULL)          {            if (node->GetPrev() != NULL)  //检查是否有同级前节点,如果有做上移操作            {              if (node->GetPrev() != NULL)                node->MoveTo(TargetNode,naInsert);              else                node->MoveTo(TargetNode,naAddFirst);            }            else              node->MoveTo(TargetNode,naAdd);          }        }      }      else //下移      {        if (node->GetNext() != NULL)        {          TargetNode = node->GetNext();          while (TargetNode->Parent == node)          {            if (TargetNode->GetNext() == NULL)              break;            else              TargetNode = TargetNode->GetNext();          }          if (TargetNode != NULL)          {            if (node->GetNext() != NULL) //检查是否有同级下节点,假如有上移操作            {              if (TargetNode->GetNext() != NULL)                  node->MoveTo(TargetNode->GetNext(),naInsert);                else                  node->MoveTo(TargetNode,naAdd);            }            else              node->MoveTo(TargetNode,naAdd);          }        }      }    }  }}

调用方法:

void __fastcall TForm1::Button12Click(TObject *Sender){   UpDownNode(TreeView1->Selected,true,TreeView1->Selected->Level);//上移   for(int i=1;i<TreeView1->Items->Count;i++)   {      TreeView1->Items->Item[i]->ImageIndex = i;      TreeView1->Items->Item[i]->SelectedIndex = i;      TreeView1->Items->Item[i]->StateIndex = i;      //TreeView1->Items->Item[i]->TreeView->Invalidate();   }   TreeView1->Refresh();}//---------------------------------------------------------------------------void __fastcall TForm1::Button13Click(TObject *Sender){   UpDownNode(TreeView1->Selected,false,TreeView1->Selected->Level);下移   for(int i=1;i<TreeView1->Items->Count;i++)   {      TreeView1->Items->Item[i]->ImageIndex = i;      TreeView1->Items->Item[i]->SelectedIndex = i;      TreeView1->Items->Item[i]->StateIndex = i;      //TreeView1->Items->Item[i]->TreeView->Invalidate();   }   TreeView1->Refresh();}


0 0
原创粉丝点击