怎么在 treeview 中的所有结点中 ,查询结点等于某个值,如果查询到 返回该结点,否则返回空?

解决方案 »

  1.   

    function searchInTree(STA:GetSearchTreeArray;mylistView:TbsSkinListView;searchStr:string):GetSearchTreeArray;
    var
      i,arrayI:integer;
    begin
      arrayI:=0;i:=0;
    //  setLength(STA,mylistView.Items.Count);
      for i := 0 to mylistView.Items.Count-1 do
      begin
        if pos(searchStr,mylistView.Items[i].SubItems[0])>0 then
        begin
          inc(arrayI);
        end;
      end;
      if  arrayI>0 then
      begin
        setLength(STA,arrayI);
        arrayI:=0;
        for i := 0 to mylistView.Items.Count-1 do
        begin
          if pos(searchStr,mylistView.Items[i].SubItems[0])>0 then
          begin
            STA[arrayI]:=i;
            inc(arrayI);
          end;
        end;
      end else
      begin
        arrayI:=0;i:=0;
        for i := 0 to mylistView.Items.Count-1 do
        begin
          if pos(searchStr,mylistView.Items[i].Caption)>0 then
          begin
            inc(arrayI);
          end;
        end;
        setLength(STA,arrayI);
        arrayi:=0;i:=0;
        for i := 0 to mylistView.Items.Count-1 do
        begin
          if pos(searchStr,mylistView.Items[i].Caption)>0 then
          begin
            STA[arrayI]:=i;
            inc(arrayI);
          end;
        end;
      end;
      result:=STA;
    end;
      

  2.   

    GetSearchTreeArray=array of integer;  
      

  3.   

    var
      SearchTreeArray:GetSearchTreeArray;
      i:integer;
    begin
      i:=0;
      SearchTreeArray:=searchInTree(SearchTreeArray,Lvw_sendmobile,edtKeyValue.Text);
    //  showmessage(inttostr(searchTreeArray[0]));
      Lvw_sendmobile.Selected:=nil;
      Lvw_sendmobile.SetFocus;
      for i:=0 to (length(searchTreeArray)-1) do
      begin
        Lvw_sendmobile.Items[searchTreeArray[i]].Selected:=true;
      end;
    end;
    这是调用
      

  4.   

    好象没有上面楼上那样复杂,var
      str: string;  
    str:=edit1.text;
    for i:=0 to Treeview1.items.count-1 do
      Begin
         if str=Treeview1.items.item[i] then
            Showmessage(Treeview1.Items.Item[i]);
      End;
      

  5.   

    var
      str: string;  
    str:=edit1.text;
    for i:=0 to Treeview1.items.count-1 do
      Begin
         if str=Treeview1.items.item[i] then
            Showmessage(Treeview1.Items.Item[i]);
      End;
      

  6.   

    呵呵,通常的做法就是遍历,当然,如果你的TreeView建立是有规律的,也可以提高一下效率