假设有一个树如下:

 1。1
 1。2

 2。1
 2。2如何实现这样的功能:
当用户在文本框中输入文字后则自动查找树,如果跟树中某个节点的文字一样,则选中该节点?

解决方案 »

  1.   

    for i:=0 to treeview.items.count -1 do
    if lowercase(treeview.items[i].text) = lowercase(edit.text) then
    begin
      treeview.items[i].text:=edit.text;
      break;
    end;
      

  2.   


    treeview.items[i]中的这个i如何得到呢?除了循环的方法有没有indexof之类的函数?
      

  3.   

    1、确定根结点;
    2、确定每个子结点的父结点;
    3、对于新增父结点使用语句:
       NewNode:=TreeView.Items.AddChild(nil,TipName);
    4、对于新增子结点使用语句:
       NewNode := TreeView.Items.AddChild( NowNode,TipName);
       注:NowNode为父结点
           TipName为该结点的显示字符
      

  4.   

    for i:=0 to treeview.items.count -1 do 
    if lowercase(treeview.items[i].text) = lowercase(edit.text) then 
    begin 
      treeview.items[i].selected:= true;
      break; 
    end; 
      

  5.   

    二楼是对的,还不结贴?for i:=0 to treeview.items.count -1 do 
    if lowercase(treeview.items[i].text) = lowercase(edit.text) then 
    begin 
      treeview.items[i].selected:= true; 
      break; 
    end;
      

  6.   

    还是感觉DBTree方便,例如:dxdbtree,可以连接数据集的,如果需要查找,只需要使用数据集查询功能就可以了,比如:你查询张三:
      if AdoQuery.Locate('Name', '张三', []) then
      begin
        //有张三
      end;如果不使用dbtree,就需要自己写,不过上面几位已经给出方法了。
      

  7.   

    for i:=0 to treeview.items.count-1 do 
    begin
      NowNode:=Tree.items[i];          // 取出当前的选中节点
      TipName:=NowNode.text;           // 取出当前的选中节点的标题
      IF TipName=s THEN                // 比较或改为在TipName中查找s
      BEGIN 
        k:=I; 
        NowNode.selected; 
      end; 
    end;1、k记录结点的编号;
    2、在TreeView中的结点被选中;
    3、S为待选择的结点标题字符串
      

  8.   

    试下速度吧,我也没找到好方法了,九楼的方法我还不太懂,控件已经有了,先琢磨下
    -------------------------------------------------------------------
    需要设置一下几点:1、DataSource
    2、KeyField:主键
    3、ListField:树节点上需要显示的字段;
    4、ParentField:既然是树,肯定有上级几点字段;设置好以上后,数据集只要有数据就可以了。