procedure TForm1.lvMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dItem:=lv.ItemAtPos(Point(x,y),True);
end;
procedure TForm1.lvMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (dItem<0) or (dItem>lv.Items.Count) then Exit;
if ssLeft in Shift then
begin
lv.Items.BeginUpdate;
lv.Items.Move(dItem,lv.ItemAtPos(Point(x,y),True));
dItem:=lv.ItemAtPos(Point(x,y),True);
lv.Items.EndUpdate;
end;
end;