X
xuepiaofei
Unregistered / Unconfirmed
GUEST, unregistred user!
为了满足用户多选和一次性删除的要求,我把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.Selected then
Listview1.Items.Delete;
end; // for
end;
可是这两个算法有明显的漏洞,在用户删除最后一个节点的时候,这两个算法都有问题,
尤其是第二个算法,循环上限ListView1.Items.Count居然每次都在变,非常不合乎常规。
请教各位高手,如何来设计一个行之有效的算法来解决这个问题?
……
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.Selected then
Listview1.Items.Delete;
end; // for
end;
可是这两个算法有明显的漏洞,在用户删除最后一个节点的时候,这两个算法都有问题,
尤其是第二个算法,循环上限ListView1.Items.Count居然每次都在变,非常不合乎常规。
请教各位高手,如何来设计一个行之有效的算法来解决这个问题?