如果在树的MouseDown中写入:
if ( htOnItem in (sender as TTreeview).GetHitTestInfoAt( X, Y ) ) then
begin
(sender as TTreeview).BeginDrag( False );
end;
可以实现拖动,但会出现阴影,请问怎样进行处理?
...全文
1182打赏收藏
急、急、急:怎样实现TreeView的开始拖拽?
如果在树的MouseDown中写入: if ( htOnItem in (sender as TTreeview).GetHitTestInfoAt( X, Y ) ) then begin (sender as TTreeview).BeginDrag( False ); end; 可以实现拖动,但会出现阴影,请问怎样进行处理?
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;