for CurrentItem := 0 to TreeView.Items.Count - 1 do
 begin
  if TreeView.Items[CurrentItem].Text = DataItem then 
  begin
    //Do something
    break;
  end;
 end;

解决方案 »

  1.   

    很好办的首先要看你找的位置比如是第三根点的第2子点的第5子点
    就node=TreeView.Items.Item[0];
    node=node.getNextSibling();
    node=node.getNextSibling();
    //找到第三根点
    node=node.item[1];
    //找到第2子点
    node=node.item[4]
    //找到第2子点的第5子点啦!!!
      

  2.   

    var 
      TempNode:TTreeNode;
    begin
      TempNode:=TreeView1.TopItem;
      while TempNode<>nil do
      begin
        判断TempNode是不是你要找的节点
         是则退出
        否则:TempNode:=TempNode.NextNode    
      end;
      

  3.   

    var 
      i:integer;
      ResultItem:TTreeNode;
    begin
      for i:=0 to TreeView1.Items.Count-1 do 
        if TreeView1.Items[i].Text=指定文本 then
        begin
          ResultItem:=TreeView1.Items[i];
           break;
        end; ResultItem就是你要的节点
      

  4.   

    //node 是找到的点 while node.level>0 then
    begin
    node=node.parent
    node.expanded=true
    end;
    //这样你就展开了
      

  5.   

    treeview最大的好处就是分层。设想有一万条纪录平分成4层每层10个点,那么找任意个点都不会超过40次查找,而循环一次要10000!!!
    比如有一个点,是分公司X-〉部门X->小组X->个人X
    那么用
    while node.text<>分公司X or node.index<=node.parent.count then
             node=node.getNextSibling();
    //判断是否出界
         node=node.item[0];
    while node.text<>部门X or node.index<=node.parent.count then
             node=node.getNextSibling();
    ........