C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3471] Re:[질문]리스트뷰에서 다중 선택된 아이템을 삭제할려면...
[] 3486 읽음    2000-05-19 00:00
서영재 님이 쓰신 글 :
: 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();
}

끝.

+ -

관련 글 리스트
3467 [질문]리스트뷰에서 다중 선택된 아이템을 삭제할려면... 서영재 3305 2000/05/18
3471     Re:[질문]리스트뷰에서 다중 선택된 아이템을 삭제할려면... 3486 2000/05/19
3482         감사합니다. 서영재 3149 2000/05/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.