Delphi 在ListView中拖动图标,本实例演示如何在程序运行过程中动态拖动TListView组件中的图标。在窗体中添加一个TImageList组件,并且为它添加3个图像文件。然后添加一个TListView组件,设置它的LargeImages和SmallImages属性为TImageList组件,为TListView组件添加3个列表项,并且设置列表项的ImageIndex属性分别对应TImageList组件中的图像索引编号。当用户在TListView组件中用鼠标左键选中一个列表项后,就通过调用BeginDrag函数进行拖动操作,在鼠标拖动过程中,要不停改变选中列表项的位置,代码如下:
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
PosPoint:TPoint;
begin
PosPoint.x:=X;
PosPoint.y:=Y;
(Source As TListView).Selected.SetPosition(PosPoint);
end;
释放鼠标后,通过设置OnDragOver事件中的Accept参数来决定是否接受拖动操作。在本实例中如果拖动源为TListView组件,那么就设置Accept参数为True,即接受操作,响应代码如下:
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:=Source Is TListView;
end;