为了满足用户多选和一次性删除的要求,我把ListView1的属性设置如下:
……
MultiSelect = True;
ViewStyle   = vsReport;
……因此我想到了两种算法:算法一:
var
  Item:TListItem;
begin
  Item:=ListView1.Selected;
  while Item<>nil do begin
    Item.Delete;
    Item:=ListView1.GetNextItem(Item, sdAll, [isSelected]);
  end;    // while
end;算法二:
var
  I: Integer;
begin
  for I := 0 to ListView1.Items.Count - 1 do begin    // Iterate
    if Listview1.Items[i].Selected then
      Listview1.Items[i].Delete;
  end;    // for
end;可是这两个算法有明显的漏洞,在用户删除最后一个节点的时候,这两个算法都有问题,
尤其是第二个算法,循环上限ListView1.Items.Count居然每次都在变,非常不合乎常规。请教各位高手,如何来设计一个行之有效的算法来解决这个问题?