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
[19073] Re:(Qustion) ListView1->Items->Clear() 의 문제.
유영인.Chris [cuperido] 1255 읽음    2002-06-03 14:21
한줄한줄 지우는 것이 눈에 보여서 상당히 느리실 껍니다. 이럴때는, BeginUpdate(); EndUpdate(); 메소드를 사용하시면 됩니다.

아래 예제는 Button1는 Item 5000개 추가, Button2 는 Item을 모두 삭제하는 예제입니다.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

int               itCount;

ListView1->Items->BeginUpdate();

for(itCount = 0; itCount < 5000; itCount ++) {
   TListItem         *ITEM;

   ITEM = ListView1->Items->Add();
   ITEM->Caption = "HELLO";
}

ListView1->Items->EndUpdate();


}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{

ListView1->Items->BeginUpdate();

ListView1->Items->Clear();

ListView1->Items->EndUpdate();

}
//---------------------------------------------------------------------------


유지상 님이 쓰신 글 :
: ListView1 라는 리스트뷰를 폼에 놓고,
: 그 리스트뷰에 매우 많은 양의 리스트가 삽입되었다고 할 때에,
: 이때 그 리스트를 한꺼번에 지우기 위해서,
: ListView1->Items->Clear()
: 라고 했는데, 동작이 너무 느립니다.
: 종종,ListView1에 들어있는 아이템개수가 (약 5000개 정도로)많을 경우 ListView1->Items->Clear() 가 수행되는 도중 시스템다운이 일어나기도 합니다. (사실은 이 리스트뷰는 동영상의 자막을 한줄한줄 읽어들여서 다 표시해주는 역할을 합니다. 일반적으로 자막하나에 약 5000 개의 켑션이 들어있지요. ) 이 리스트뷰에 아이템들을 다 지울 때, 시스템에 무리를 적게 주면서 지우려면 어떻게해야하죠?
:
:
:

+ -

관련 글 리스트
19058 (Qustion) ListView1->Items->Clear() 의 문제. 유지상 914 2002/06/02
19073     Re:(Qustion) ListView1->Items->Clear() 의 문제. 유영인.Chris 1255 2002/06/03
19101         Re:Re:(Qustion) ListView1->Items->Clear() 의 문제. 지나가다가 797 2002/06/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.