有个问题想请教大家:
    我在使用TTreeView时想实现点右键然后弹出菜单删除一个节点,就象windows资源管理器左边的树一样.我设置了RightClickSelect为true,但是无效,必须点左键才能选中节点,为什么? 先谢了.

解决方案 »

  1.   

    用个POPMENU,在这个弹出菜单中写代码
    treeview1.selected.delete;
      

  2.   

    多谢回复!
    但是好象这样不行,一开始我就是如jjaacc()所说的这样做的.被delete掉的是上次点击左键时所选择的节点,而不是点右键所选的节点,也就是即使将RightClickSelect设置为true时,单击鼠标右键时treeview1.selected并不会发生变化,有时间敬请各位亲自试试,我用的是Delphi6.0.
    多谢!
      

  3.   

    treeview1.selected.item[treeview1.selected.index].delete;
    这样不知对不对?
      

  4.   

    以上都没考虑到:鼠标右键点击了空白处是不应该弹出菜单的。
    正确编码如下:
    //TreeView的OnMouseDown事件
    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var FDelNode:TTreeNode;
    begin
      if Button = mbRight then
      begin
        FDelNode:= TreeView1.GetNodeAt(X,Y);
        if Assigned(FDelNode) then
        begin
         FDelNode.Selected := True;
         PopupMenu1.Popup(TreeView1.ClientOrigin.X+X,
           TreeView1.ClientOrigin.Y+Y);
        end;
      end;
    end;procedure TForm1.delete1Click(Sender: TObject);
    begin
         TreeView1.Selected.Delete;
    end;