procedure TfrmMain.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
CurrNode: TTreeNode;
begin
if Button = mbRight then
begin
CurrNode := TreeView1.GetNodeAt(X, Y);
if CurrNode <> nil then
TreeView1.Selected := CurrNode;
end;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode,SourceNode:TTreeNode;
begin
TargetNode:=TreeView1.GetNodeAt(X,Y);
if (Source=Sender) and (TargetNode<>nil) then
begin
Accept:=true;
SourceNode:=TreeView1.Selected;
while (TargetNode.Parent<>nil) and (TargetNode<>SourceNode) do
TargetNode:=TargetNode.Parent;
if TargetNode=SourceNode then
Accept:=False;
end
else
Accept:=False;
end;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
TargetNode,SourceNode:TTreeNode;
begin
TargetNode:=TreeView1.GetNodeAt(X,Y);
if TargetNode<>nil then
begin
SourceNode:=TreeView1.Selected;
SourceNode.MoveTo(TargetNode,naAddChildFirst);
TargetNode.Expand(False);
TreeView1.Selected:=TargetNode;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.LoadFromFile(ExtractFilePath(Application.ExeName)+'TreeText1.txt');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TreeView1.SaveToFile(ExtractFilePath(Application.ExeName)+'TreeText1.txt');
end;
procedure TForm1.close1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var node: TTreeNode;
begin
if Button = mbRight then
begin
sendMessage(TreeView1.Handle,WM_LBUTTONDOWN,0,MakeLong(x,y));
end;
end;