if  (treeview1.selected.text='超级用户') or (treeview1.selected.text='普通用户'  then
  exit
else
 treeview1.selected.edittext;
  

解决方案 »

  1.   

    还是不行,偶是着把treeview设为readonly,算是可以了,不过,不过别地可又不行了
      

  2.   

    哦,应该是你按了超级用户或普通用户之后,treeview变了编辑,但你再按其它时没有改它的状态,所以还可以修改,你只要在else和exit之间再改变的状态就可以了
      

  3.   

    因为你按了其它的用户只是退出,不做下面的工作,但没有改变treeview状态,它就会保持原来的状态,而你之前按过超级用户或普通用户把 treeview 的状态改成edit,所以就还可以修改了
      

  4.   

    不是你双击调用
    treeview1.selected.edittext
    造成的修改状态,而是当‘超级用户’和‘普通用户’是选中状态时,此时你乱点击,点中了
    该节点,系统自动将该节点设置为编辑状态。
    你可以将TreeView设置为ReadOnly,在MouseDown事件中通过GetNodeAt(X,Y)来判断当前节点,
    如果不是‘超级用户’和‘普通用户’,则将TreeView的ReadOnly设为false,否则设置为True。
    if TreeView1.GetNodeAt(X,Y)<>nil then
        if (TreeView1.GetNodeAt(X,y).Text='超级用户') or (TreeView1.GetNodeAt(X,y).Text='普通') then
             TreeView1.ReadOnly:=true
            else
             TreeView1.ReadOnly:=false;
      

  5.   

    就是楼上说的那样
    else
     begin
        treeview1.readonly:=false;
        exit;
     end;
      

  6.   

    建议在OnEditing事件中检查并设置CanEdit参数
      

  7.   

    gzmhero(hihihi) ,偶并没有点中节点,偶慢慢的试了试,是这样的:
    先选中 “超级、普通” ,然后在其上点击一下(较重),然后较慢松开,“超级、普通” 即被置于,可编辑状态,偶想进一步了解
    你提供的mousedown则完全可行
      

  8.   

    第二次点击相隔时间长,没有产生DoubleClick事件。
      

  9.   

    偶可能有些钻了
    不过有一个更奇特的现象:经过偶试验,偶上述的说法也不对,实际是:
    第一次点击后,第二次稍重点击,然后摁住不松手,这是被选中的节点就已经处于
    编辑状态了, 而且,多做几次,所有节点全部失去编辑响应,即都不可编辑了
    代码:
    if (Treeview1.selected.text='超级用户') or (Treeview1.selected.text='普通用户') then
        treeview1.readonly:=true
    else
       Treeview1.selected.Edittext;
    你可试验一下
      

  10.   

    dbl click 事件中不能确认是在哪个结点上发生事件
    问题已经结束楼上的 lyre说得没错, 要在 OnEditing 设置CanEdit参数比较可靠
      

  11.   

    //建立新工程节点
    procedure TForm1.NewProject1Click(Sender: TObject);//菜单事件
    var
        Node:TTreeNode;
    begin
         if Treeview1.Items.Count =0 then
         begin
            Node:=Treeview1.Items.Add(nil,'新工程');
            TreeView1.Selected :=Node;
            Node.EditText ;
         end
         else
         begin
               Node:=Treeview1.Selected ;
               Node:=Treeview1.Items.Add(Node,'新工程');
               TreeView1.Selected :=Node;
               Node.EditText ;
         end
    end;//建立新井节点
    procedure TForm1.NewLog1Click(Sender: TObject);//菜单事件
    var
        Node:TTreeNode;
    begin
         Node:=Treeview1.Selected ;
         if Node.parent =nil then
         begin
            Node:=Treeview1.Items.AddChild(Node,'新井');
            TreeView1.Selected :=Node;
            Node.EditText ;
         end;end;//如果工程和井尚未建立子节点,允许修改其名称
    procedure TForm1.TreeView1Editing(Sender: TObject; Node: TTreeNode;
      var AllowEdit: Boolean);
    begin
            if (Node.Parent <>nil)and (Node.Parent.Parent <>nil) then
                    AllowEdit:=False
            else if (Node.Parent <>nil)and (Node.Parent.Parent =nil)  then
            begin
                   if (Node.getFirstChild =nil) then AllowEdit:=True
                   else     AllowEdit:=False;
            end
            else if (Node.Parent =nil) then
            begin
                   if (Node.getFirstChild =nil) then AllowEdit:=True
                   else     AllowEdit:=False;
            end;end;我的一端代码。