解决方案 »

  1.   

    安装目录的demos子目录里有拖放的例子
      

  2.   

    各控件都有这些事件:OnDragOver、OnDragOver、OnStraDrag、OnEndDrag
      

  3.   


    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      //开启拖动
      if ( Button = mbLeft ) and (htOnItem in Treeview1.GetHitTestInfoAt( X, Y ) ) then
        TreeView1.BeginDrag( False );
    end;
    procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    var
      Node : TTreeNode;
    begin
      //拖动目的控制
      if (Source = TreeView1) then
      begin
        Node := Treeview1.GetNodeAt( X, Y ); {取当前结点}
        if Node <> nil then                  {当前结点不为空才能实现拖拽,accept:=true}
          Accept := true;
      end;
    end;
    procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
      //拖动释放
      Panel1.Caption:=TreeView1.Selected.Text;
    end;