for I := 0 to TreeView1.Items.Count - 1 do
begin
  if CompareText(TreeView1.Items[I].Text, '12') = 0 then
  begin
    Result := TreeView1.Items[I];
    Exit;
  end;
end;

解决方案 »

  1.   

    正如 kevin_gao(困了!累了!睡觉了!) ,我有很多層!!!!
      

  2.   

    先给出简单解法
    Function GetNode(ATV:TTreeView;AValue:String):TTreeNode;
    Var
      I:Integer;
    Begin
      Result:=nil;If ATv.Items.Count<1 Then Exit;
      For I:=0 To ATv.Items.Count-1 Do
        If ATv.Items.Item[I].Text=AValue Then 
          Begin
            Result:=ATv.Items.Item[I];
            Exit;
          End;
    End;复杂的我再想想
      

  3.   

    Function GetNode(ATV:TTreeView;AValue:String):TTreeNode;
      Function CheckNode(ANode:TTreeNode;AValue:String):TTreeNode;
      Var
        TmpNode:TTreeNode;
      Begin
        Result:=nil;
        If ANode.Text=AValue Then
          Begin
            Result:=ANode;
            Exit;
          End;
        If ANode.HasChildren Then
          Begin
            TmpNode:=ANode.getFirstChild;
            While TmpNode<>nil Do
              Begin
                If CheckNode(TmpNode,AValue)<>nil Then
                  Begin
                    Result:=TmpNode;
                    Exit;
                  End
                Else
                  TmpNode:=TmpNode.getNextSibling;
              End;
          End;
      End;
    Var
      RootNode:TTreeNode;
    Begin
      Result:=nil;If ATv.Items.Count<1 Then Exit;
      RootNode:=ATv.Items.Item[0];
      Result:=CheckNode(RootNode,AValue);
    End;