Again: Exchange items in Listview

I'm using the following procedure to exchange to Tlistview items.
(Viewstyle = vsReport)
When I use checkboxes, all checkboxes get unchecked.
Why ?

Tom

procedure ExchangeItems(Item1, Item2: TListItem);
var
  LV: TListView;
begin
if Assigned(Item1) and Assigned(Item2) then
  begin
    LV := TListView(Item1.ListView);
    LV.Items.BeginUpdate;
    LV.Items.Insert(Item1.Index).Assign(Item2);
    LV.Items.Insert(Item2.Index).Assign(Item1);
    Item1.Delete; Item2.Delete;
    LV.Items.EndUpdate;
  end;
end;