删除一个item的时候,如果接着处理listview那么需要注意两个问题,第一是ItemCount已经变了,记得更新自己的变量或循环的上下限,第二,如果删除的不是最后的一条纪录的话,那么该item以后的所得的item的itemindex已经变了.不能再用原来保存的itemindex来访问.如果你注意到了这粮店的话,应该就不会有out of index的错误了.
ListView_MemberList.Enabled:=false; case state of -1: begin WriteLogFile(bstrUserName,'收到',bstrString,slavename+'离开课堂'); for i:=0 to ListView_MemberList.Items.Count-1 do begin if i=ListView_MemberList.Items.Count then begin break; end; if ListView_MemberList.Items[i].caption = slavename then begin ListView_MemberList.Items[i].delete; break; end; end; Label_MemberCount.Caption:=inttostr(strtoint(Label_MemberCount.Caption)-1); end; 0: begin HaveAdded:=false; for i:=0 to ListView_MemberList.Items.Count-1 do begin //判断该用户是否已存在,有则恢复初始状态 if i=ListView_MemberList.Items.Count then begin break; end; if ListView_MemberList.Items[i].caption = slavename then begin HaveAdded:=true; ListView_MemberList.Items[i].subitems[0]:=' '; ListView_MemberList.Items[i].subitems[1]:=' '; ListView_MemberList.Items[i].subitems[2]:=' '; ListView_MemberList.Items[i].subitems[3]:=' '; break; end; end; try if not HaveAdded then begin //没有则添加该用户 WriteLogFile(bstrUserName,'收到',bstrString,slavename+'加入课堂'); NewItem:=ListView_MemberList.Items.Add; NewItem.ImageIndex:=15; NewItem.Caption:=slavename; for i:=1 to 4 do begin NewItem.SubItems.Add(' '); end; // end for NewItem.SubItems.Add('-'); Label_MemberCount.Caption:=inttostr(strtoint(Label_MemberCount.Caption)+1); end; except end; // end try end; // end ifend; . . .
case state of
-1: begin
WriteLogFile(bstrUserName,'收到',bstrString,slavename+'离开课堂');
for i:=0 to ListView_MemberList.Items.Count-1 do begin
if i=ListView_MemberList.Items.Count then begin
break;
end;
if ListView_MemberList.Items[i].caption = slavename then begin
ListView_MemberList.Items[i].delete;
break;
end;
end;
Label_MemberCount.Caption:=inttostr(strtoint(Label_MemberCount.Caption)-1);
end;
0: begin
HaveAdded:=false;
for i:=0 to ListView_MemberList.Items.Count-1 do begin //判断该用户是否已存在,有则恢复初始状态
if i=ListView_MemberList.Items.Count then begin
break;
end;
if ListView_MemberList.Items[i].caption = slavename then begin
HaveAdded:=true;
ListView_MemberList.Items[i].subitems[0]:=' ';
ListView_MemberList.Items[i].subitems[1]:=' ';
ListView_MemberList.Items[i].subitems[2]:=' ';
ListView_MemberList.Items[i].subitems[3]:=' ';
break;
end;
end;
try
if not HaveAdded then begin //没有则添加该用户
WriteLogFile(bstrUserName,'收到',bstrString,slavename+'加入课堂');
NewItem:=ListView_MemberList.Items.Add;
NewItem.ImageIndex:=15;
NewItem.Caption:=slavename;
for i:=1 to 4 do begin
NewItem.SubItems.Add(' ');
end; // end for
NewItem.SubItems.Add('-');
Label_MemberCount.Caption:=inttostr(strtoint(Label_MemberCount.Caption)+1);
end;
except end; // end try end; // end ifend; .
.
.