有个四层的树,要求右键点击每层的节点后都可以弹出友键菜单,可以进行添加删除修改功能.怎么实现呢,给我点建议吧.

解决方案 »

  1.   

    增加一个PopupMenu1设treeview1.PopupMenu:=PopupMenu1procedure TForm1.N1Click(Sender: TObject);
    var
    emptynode: TTreeNode;
    begin
    emptynode:=TreeView1.Selected;
    TreeView1.Items.AddChild(emptynode,'新节点');
    end;procedure TForm1.N2Click(Sender: TObject);
    begin
    TreeView1.Selected.Delete;
    end;
      

  2.   

    1.给treeview加个popupMenu
    2.tv1.Selected.Delete;
      tv1.Items.AddChild(tv1.Selected...)添加孩子
      tv1.Items.Add(tv1.Selected...)添加兄弟
      点左键直接可以修改
      

  3.   

    将各自的popMenu存在各自的data里在mousedown事件里调用treeview1.Selected.data的。或者用判断treeview1.Selected.level再调用各自的菜单
      

  4.   

    treeview问题 这样的帖子很多 关键(我认为)是TTreeNode 的使用
      

  5.   

    最好是在ttreeview的onmouseclick事件中手动弹出popupmenu以及设定哪个节点被选中,否则只点右键虽然可以弹出菜单,但是ttreeview被选中的树节点的焦点是不变的
      

  6.   

    “最好是在ttreeview的onmouseclick事件中手动弹出popupmenu以及设定哪个节点被选中,否则只点右键虽然可以弹出菜单,但是ttreeview被选中的树节点的焦点是不变的”说得不错,这个方面一定要考虑到
      

  7.   

    我说的就是要按照rongrongGsr()那样,对哪个节点选右键时只是删除当前这层的这个节点.怎么实现呢?
      

  8.   

    一个增加的例子procedure TForm1.N1Click(Sender: TObject);
    var
    emptynode: TTreeNode;
    begin
      if treeview1.Selected.Parent=nil then
      begin
      emptynode:=treeview1.Items.Add(nil,'省分');
      emptynode:=treeview1.Items.AddChild(emptynode,'城市');
      treeview1.Items.AddChild(emptynode,'新酒店名称')
      end
      else if treeview1.Selected.HasChildren=false then
      begin
      treeview1.Items.AddChild(treeview1.Selected.Parent,'新酒店名称');
      end
      else
      begin
      emptynode:=treeview1.Items.AddChild(treeview1.Selected.Parent,'城市');
      treeview1.Items.AddChild(emptynode,'新酒店名称')
      end;
    end;