我用这个控件建了一些根和子根,但是我想在其onclick里对选择的节点进行判断,但是我明明在Tree Items Editor中的Selected index设好了选中这个节点后的值,但是实际应用中却都不一样了,这是为什么?我要怎么写才能实际我的功能?

解决方案 »

  1.   

    建议设置各点的tag属性来作为唯一性判断,那样更方便一点
      

  2.   

    直接获取Selected index就行了
      

  3.   

    我用的就是 if treeview1.Subselect.Index=1 then……
    但是我把字节点都设成1……10,父节点全是0,我一用上面的语句,点击父节点第二个就执行了then后面的,点击子节点第二个也执行then后面的,而不是第一个,这是怎么回事?
      

  4.   

    procedure TForm1.TreeView1Click(Sender: TObject);
    begin
      if treeview1.Selected.Level=1 then
        begin
         adoquery1.Close;
         adoquery1.SQL.Clear;
         adoquery1.sql.add('select * from tree..testtree where longid=:aa');
         adoquery1.Parameters.ParamByName('aa').Value:=copy(treeview1.Selected.Text,4,2);
         showmessage(copy(treeview1.Selected.Text,4,2));
         adoquery1.open;
         edit1.text:=adoquery1.fieldbyname('longid').value;
         edit2.text:=adoquery1.fieldbyname('text').value;
         //treeview1.Selected:=nil;
         //edit1.text:=treeview1.Selected.Text;
        end;
      if treeview1.Selected.Level=2 then
        begin
          adoquery1.Close;
          adoquery1.SQL.Clear;
          adoquery1.SQL.Add('select* from tree..node where names=:aa');
          adoquery1.Parameters.ParamByName('aa').Value:=copy(treeview1.Selected.Text,2,4);
          showmessage(copy(treeview1.Selected.Text,2,4));
          adoquery1.Open;
          edit1.Text:=treeview1.Selected.Parent.Text;
          edit2.Text:='';
          edit3.Text:=adoquery1.FieldValues['names'];
          edit4.Text:=adoquery1.FieldValues['ide'];
        end;
    end;
    足够解决你问题了吧?
      

  5.   

    用treeview1.Selected.Level语句固然可以选择是根节点还是子节点,但是我一点击某个根节点下的子节点,执行的就都是一样的语句了。意思就是每个根节点下面的字节点都是按照0依次递增的,我想把每个根节点和子节点都加以标识,不想用treeview1.Selected.text,就不行了:(