我想在Treeview中有鼠标拖动节点到另外的父节点下,怎么做,用Drag的事件

解决方案 »

  1.   

    1.dragmode:=automatic//or seems like this
    2.ondragover: accept:=true;
    3.ondragdrop: treeview.items.move(treeview.selected,treeview.getnodeat(x,y));
      

  2.   

    1.TreeView1.DragMode:=dmAutomatic;2.TreeView1的OnDragOver事件:(引用某高手的代码)
    procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    var
      AnItem: TTreeNode;
      AttachMode: TNodeAttachMode;
      HT: THitTests;
    begin
      if TreeView1.Selected = nil then Exit;
      HT := TreeView1.GetHitTestInfoAt(X, Y);
      AnItem := TreeView1.GetNodeAt(X, Y);
      if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
      begin
        if (htOnItem in HT) or (htOnIcon in HT) then AttachMode := naAddChild
        else if htNowhere in HT then AttachMode := naAdd
        else if htOnIndent in HT then AttachMode := naInsert;
        TreeView1.Selected.MoveTo(AnItem, AttachMode);
      end;
    end;