TheNode:=nil;
with TreeView.Items do for i:=0 to pred(Count) do 
  if Items[i].Text=DesireText then begin
    TheNode:=Items[i];
    break;
  end;
if TheNode=nil then ShowMessage('Text not found')
else TheNode.MakeVisible(False);

解决方案 »

  1.   

    thank you very much ............................,不过你这样定位可能时间较慢,特别在初始化TREEVIEW时并记录很多时,会很慢,请文有更好的方法?
      

  2.   

    如果你是查找整个字符串:theNode := TreeView1.TopItem.getFirstChild;
    while (theNode.Text<>theStr) do
    begin
      if (theNode不是最后一个节点) then
        theNode := theNode.GetNext
      else
        break;
    end;if (theNode.Text<>theStr) then
    //没找到
    else
    //找到了;如果你想每敲一个字查一次,改一下上面的代码也可以实现。
      

  3.   

    thank you very much ............................
    能否通过排序查找或者象VB中一样treenode的key属性来定位?
      

  4.   

    Delphi 没有这样的方法,你可以自己写一个来模拟
      

  5.   

    能否利用record 将node的data指向一record
      

  6.   

    //==============================================================================
    //数据集解构成树****************************************************************
    //==============================================================================
    procedure DataSetToTreeView(DataSet: TDataSet; var TreeView: TTreeView; NodeRoot: string);
    var Nodes: array of TTreeNode;
        Strs: array of string;
        i: integer;
    begin
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      with DataSet do
      begin
        Close;
        Open;
        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        SetLength(Nodes, FieldCount+1);
        SetLength(Strs, FieldCount);
        Nodes[0] := TreeView.Items.AddChild(nil, NodeRoot);
        for i:=Low(Strs) to High(Strs) do Strs[i] := #255;
        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        First;
        while not Eof do
        begin
          for i:=Low(Strs) to High(Strs) do
            if Strs[i]<>Fields[i].AsString then
            begin
              Strs[i] := Fields[i].AsString;
              Nodes[i+1] := TreeView.Items.AddChild(Nodes[i],Fields[i].AsString);
            end;
          Next;
        end;
        Close;
      end;
    end;