treeview节点信息拖拽到panel上解决方法
treeview节点信息拖拽到panel上
在做一个视频预览的客户端,treeview用于显示摄像机列表,TPanel[24]数组用于预览图像,已经实现选择一个panel控件后,双击treeview里面的摄像机名称,在指定的panel里面可以看到图像,现在想利用控件的拖拽功能,实现鼠标左键拖拽treeview内的摄像机名称到panel控件数组内,实现图像预览,这个怎么实现,谢谢了!
------解决方案--------------------
安装目录的demos子目录里有拖放的例子
------解决方案--------------------
各控件都有这些事件:OnDragOver、OnDragOver、OnStraDrag、OnEndDrag
------解决方案--------------------
在做一个视频预览的客户端,treeview用于显示摄像机列表,TPanel[24]数组用于预览图像,已经实现选择一个panel控件后,双击treeview里面的摄像机名称,在指定的panel里面可以看到图像,现在想利用控件的拖拽功能,实现鼠标左键拖拽treeview内的摄像机名称到panel控件数组内,实现图像预览,这个怎么实现,谢谢了!
------解决方案--------------------
安装目录的demos子目录里有拖放的例子
------解决方案--------------------
各控件都有这些事件:OnDragOver、OnDragOver、OnStraDrag、OnEndDrag
------解决方案--------------------
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;