这是 Ttreenode.moveto 的例子 :
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);var
AnItem: TTreeNode;
AttachMode: TNodeAttachMode;
HT: THitTests;
begin
if TreeView1.Selected = nilthen Exit;
HT := TreeView1.GetHitTestInfoAt(X, Y);
AnItem := TreeView1.GetNodeAt(X, Y);
if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
//从上面开始“(HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) 说这个运算符不对,还有下在面的(htOnItem in HT) 等也都不行。
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;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);var
AnItem: TTreeNode;
AttachMode: TNodeAttachMode;
HT: THitTests;
begin
if TreeView1.Selected = nilthen Exit;
HT := TreeView1.GetHitTestInfoAt(X, Y);
AnItem := TreeView1.GetNodeAt(X, Y);
if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
//从上面开始“(HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) 说这个运算符不对,还有下在面的(htOnItem in HT) 等也都不行。
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;
改成下边的.
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
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
//从上面开始“(HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) 说这个运算符不对,还有下在面的(htOnItem in HT) 等也都不行。
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;
下面的运算在我这都不能完成:
(HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT)
(htOnItem in HT) or (htOnIcon in HT)
htNowhere in HT
htOnIndent in HT
if ((HT - [htOnItem, htOnIcon, htNowhere, htOnIndent]) <> HT) then