Как осуществить следующие действия с компонентом TListView: 1. Drag&Drop из одного TListView в другой. 2. Перемещение одной сторчки (TListItems) на другую позицию 3. Связать со строчкой (TListItems) объект, и(или) запись.
Смотри DRKB -> VCL -> "Перетаскивание объектов, Drag and Drop, Docking" -> "Примеры использования Drag and Drop для различных визуальных компонентов" В том числе рассматриваются и TListView
Ну, допустим, второй вопрос реализуется точно так же, как первый:
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var Node, SelNode: TTreeNode; begin Node := TreeView1.GetNodeAt(x, y); Accept := (Sender = Source) and (Node <> nil); if not Accept then Exit; SelNode := Treeview1.Selected; while (Node.Parent <> nil) and (Node <> SelNode) do begin Node := Node.Parent; if Node = SelNode then Accept := False; end; end;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer); var Node, SelNode: TTreeNode; begin Node := TreeView1.GetNodeAt(X, Y); if Node = nil then Exit; SelNode := TreeView1.Selected; SelNode.MoveTo(Node, naAddChild); end;
Я сейчас попробовал - переносит и ветки и отдельные Item-ы в другое место этого же TListView как и положено...