In the OnDragDrop event of a TListView, the source item and the destination item can be obtained thus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TFormX.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  LSourceItem, LDestItem: TListItem;
  LSourceIndex, LDestIndex: Integer;
begin
   LSourceItem := ListView1.Selected;
   LDestItem :=   ListView1.GetItemAt(X, Y);
 
   LSourceIndex := ListView1.Items.IndexOf(LSourceItem);
   LDestIndex := ListView1.Items.IndexOf(LDestItem);
 
 
// ... other code ...
 
end;