小弟已经做好了一个类似于资源管理器那样的目录树了
现在我想根据用户提供的文件名,对目录树进行查找
当查找到后还要像资源管理器那样能一级一级的展开
该怎么做啊?
主要是自动展开该怎么做啊?

解决方案 »

  1.   

    自动展开 Treeview.FullExpand;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
    begin
      for i:=0 to TreeView1.Items.Count-1 do
      begin
        if TreeView1.Items[i].Text=Edit1.Text then
        begin
          TreeView1.Items[i].Selected:=true;
          TreeView1.SetFocus;
        end;  end;end;
      

  3.   

    单个结点展开的方法
      TreeView1.items[1].Expand(true);
      

  4.   

    请问xingtao1016(秋水翁)
     TreeView1.SetFocus;是什么意思啊?
      

  5.   

    就是吧焦点放到treeview上
      

  6.   

    {---查找字符过程
    入口参数: isAllString-是否为全字匹配  isGreatString-是否区分大小写  FindText-所找字符串}
    function TFormNote.FindString(isAllString: Boolean; isGreatString:Boolean; FindText: String): boolean;
    var
      i                 : integer;
      ANode             : TTreeNode;
      bStart            : Boolean;
      TempTerm          : Boolean;
    begin
      bStart := False;
      ANode := nil;
      Result := True;
      for i := 0 to TreeView1.Items.Count - 1 do
      begin
        ANode := TreeView1.Items[i];
        if isAllString and not(isGreatString) then // 全字匹配且不取分大小写
          TempTerm := (AnsiCompareText(FindText,ANode.Text) = 0);    if isAllString and isGreatString then // 全字匹配且取分大小写
          TempTerm := (AnsiCompareStr(FindText,ANode.Text) = 0);    if not isAllString and isGreatString then //不全字匹配但区分大小写
          TempTerm := (pos(FindText,ANode.Text) > 0);    if not isAllString and not isGreatString then //不全字匹配且不区分大小写
          TempTerm := (pos(lowercase(FindText),lowercase(ANode.Text)) > 0);    if bStart and (TempTerm) then
        begin
          ANode.Selected := True;//因为此句,所以找到后自然能自动展开
          TreeView1.SetFocus;
          Exit;
        end;
        bStart := bStart or (ANode = TreeView1.Selected);
      end;
      if i = TreeView1.Items.Count then
        Result := False;
    end;
    //查找下一个(F3)
    procedure TFormNote.FindNextClick(Sender: TObject);
    begin
      if not FormNote.FindString(AllBooleanTemp, GreatBooleanTemp, FindTextTemp) then
      begin
        MessageDlg('“'+FindTextTemp+'” 没有发现!', mtInformation, [mbOK], 0);
        FindNext.Enabled := False;
      end;
    end;