读书人

TreeView 怎么根据父节点的名称去获得

发布时间: 2012-03-13 11:21:12 作者: rapoo

TreeView 如何根据父节点的名称去获得这个父接?
一般的做法是用循环
for(int m = 0; m < TV-> Items-> Count; m++)
{
TTreeNode *node;
node=TV-> Items-> Item[m];
if(node-> Level == k && node-> Text.Trim() == "hotel ")
{
ParentNode = node;
break;
}
}

由于我的数据量比较大 如果用循环的方法程序会很慢 要跑两分钟才跑出结果

有没有什么函数或其他方法能根据节点名称 直接获得节点?

[解决办法]
可以在TTreeNode的Data里附加节点ID信息,然后通过ID信息查找

参考一下:

void __fastcall TForm1::Button1Click(TObject *Sender)
{ //这个过程只是在演示添加一些带有ID信息的节点,所以用了一个循环
TreeView1-> Items-> Clear();
TTreeNode *node1st,*nodechild;
node1st = TreeView1-> Items-> AddFirst(NULL, "First ");
for (int i=0;i <10;++i)
{
nodechild = TreeView1-> Items-> Add(node1st, IntToStr(i));
nodechild-> Data = (void*)(i);
}
}
//---------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
ShowMessage( "SelectedNode 's ID is " + IntToStr(int(TreeView1-> Selected-> Data)));
}
//---------------------------------------

[解决办法]
把节点Caption和ID全放在数据库里,通过ID信息查找。
[解决办法]
把表信息一次LOAD

在父节点的时候根据父节点的属性条件筛选出下一结点,这样可以省略很多时间。。。

读书人网 >C++ Builder

热点推荐