Delphi ListView拖放整行
发布时间:2020-12-15 09:45:47 所属栏目:大数据 来源:网络整理
导读:我对Delphi中用于ListView的拖放系统很陌生.我在互联网上找到了一个简单的解决方案,可以在ListView中拖放项目.问题是代码只显示拖动第一列,我想显示并拖动整行. 您可以在下面的图片中查看我得到的以及我想要得到的内容. procedure TForm1.ListView1DragDrop(
我对Delphi中用于ListView的拖放系统很陌生.我在互联网上找到了一个简单的解决方案,可以在ListView中拖放项目.问题是代码只显示拖动第一列,我想显示并拖动整行.
您可以在下面的图片中查看我得到的以及我想要得到的内容. procedure TForm1.ListView1DragDrop(Sender,Source: TObject; X,Y: Integer); var DragItem,DropItem,CurrentItem,NextItem: TListItem; begin if Sender = Source then with TListView(Sender) do begin DropItem := GetItemAt(X,Y); CurrentItem := Selected; while CurrentItem <> nil do begin NextItem := GetNextItem(CurrentItem,SdAll,[IsSelected]); if DropItem = nil then DragItem := Items.Add else DragItem := Items.Insert(DropItem.Index); DragItem.Assign(CurrentItem); CurrentItem.Free; CurrentItem := NextItem; end; end; end; procedure TForm1.ListView1DragOver(Sender,Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Sender = ListView1; end; self.ListView1.DragMode := dmAutomatic; 解决方法
我不知道你如何获得所选当前行的快照,但它的拖放部分是这样的:
// you need a TDragControlObject: TPlainDragControlObject = class(TDragControlObject) protected function GetDragImages: TDragImageList; override; End; ..... Implementation function TPlainDragControlObject.GetDragImages: TDragImageList; var images : TDragImageList; begin images := TDragImageList.create(self); // ToDo: add images - how the drag object will look like Result := images; // you can return Nil here if you want just the drag cursor with no image at all end; procedure TMainForm.lvStartDrag(Sender: TObject; var DragObject: TDragObject); begin If Sender = ListView1 Then Begin DragObject := TPlainDragControlObject.Create(Sender as TListView); End; end; 您可以创建位图并手动绘制其中的项目. 或者这里是如何制作整个列表视图(或任何其他组件)的屏幕截图: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |