ListBox1有三个值,分别是A、B、C当我用以下语句删除的话,每次只能删除最后一个值。先删C,再删B,再删A,不能任意删除。var
I:integerIf ListBox1.Selected[I] Then
begin
ListBox1.Items.Delete(I);但是改成如下却可以了,为什么呢? I := 0;
repeat
If ListBox1.Selected[I] Then
begin
ListBox1.Items.Delete(I);
Button2.Enabled := False;
I := ListBox1.Items.Count - 1;
End;
I := I + 1;
until I = ListBox1.Items.Count;
I:integerIf ListBox1.Selected[I] Then
begin
ListBox1.Items.Delete(I);但是改成如下却可以了,为什么呢? I := 0;
repeat
If ListBox1.Selected[I] Then
begin
ListBox1.Items.Delete(I);
Button2.Enabled := False;
I := ListBox1.Items.Count - 1;
End;
I := I + 1;
until I = ListBox1.Items.Count;
也可以这样:
var
i: integer;for i := ListView1.Items.Count - 1 downto 0 do
begin
if ListView1.Selected[i] then
begin
ListView1.Items.Delete(i);
end;
end;
从后往前删除。
var
k:integer;begin k:=0;
while k<=lb3.Items.Count-1 do
beginif lb3.Selected[k] thenbegin
lb3.Items.Delete(k);
BitBtn4Click(Sender); ////重復調用bitbtn4click,確保重新初始化k,如果寫成for ... lb3.items.delete(k)會發生k溢出錯誤
end;
k:=k+1;end;