|
서영재 님이 쓰신 글 :
: for문을 써서 아무리해도 안되네요
:
: for(int i=0;i<Listv->Items->Count;i++){
: if (Listv->Selected) Listv->Selected->Delete();
: }
:
:
: 위에것처럼 했는데, 4개까지 선택해서 지우면 되는데, 4개 이상 선택해서 지우면 4개까지 밖에 지워지지 않습니다.
:
: 위에 방법말고, 다른방법은 없나요???
:
: 그럼 좋은하루 되세요
:
for(int i=0 ; i<Listv->Items->Count ;i++)
{
if (Listv-> Selected) Listv->Selected->Delete();
}
위와같이 하면, 삭제된 항목수만큼 for 문을 덜 순환하게 됩니다.
예를 들어, Listv->Items->Count가 원래 9일 때 4개의 항목을 삭제하면
for 문은 9번이 아닌 5번만 순환합니다.
항목을 삭제할 때마다 Listv->Items->Count가 1씩 감소하니까요.
이 것을 방지하려면 아래와같이 하면 됩니다.
if (Listv-> Selected)
{ Listv->Selected->Delete(); i--; }
또다른 방법은 아래입니다.
for(int i=Listv->Items->Count-1 ;i>=0; i--)
{
if (Listv->Items->Item[i]->Selected)
Listv->Items->Item[i]->Delete();
}
또는
for(int i=0 ;i<Listv->Items->Count ;i++)
{
if (Listv->Items->Item[i]->Selected)
Listv->Items->Item[i--]->Delete();
}
끝.
|