//这个拖拽的感觉不对
unit Unit1;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls, Forms,
Dialogs,
ComCtrls;
type
TForm1 = class(TForm)
TreeView1:
TTreeView;
procedure TreeView1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject;
X, Y: Integer;
State: TDragState; var Accept:
Boolean);
procedure
TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R
*.DFM}
{鼠标左键按下,准备开始拖拉操作}
procedure TForm1.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; X, Y:
Integer);
begin
if ( Button = mbLeft )
and
(
htOnItem in Treeview1.GetHitTestInfoAt( X, Y )
) then
begin
Treeview1.BeginDrag(
False );
end;
end;
{鼠标拖拉操作}
procedure
TForm1.TreeView1DragOver(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;
end;
end;
{拖拉放下}
procedure
TForm1.TreeView1DragDrop(Sender,
Source: TObject; X, Y: Integer);
var
TempNode :
TTreeNode;
AttachMode : TNodeAttachMode;
begin
if Treeview1.Selected =
nil then
Exit;
AttachMode
:=
naAddChild;
Treeview1.Items.BeginUpdate;
try
TempNode := Treeview1.Items.AddChild( Treeview1.DropTarget,'Temp' );
try
Treeview1.Selected.MoveTo(
Treeview1.DropTarget, AttachMode );
finally
TempNode.Free;
end;
finally
Treeview1.Items.EndUpdate;
end;
end;
end.