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
[66340] Re:스트링그리드에서 셀부분이 길면 오래 걸리네요.
아제나 [azena] 905 읽음    2012-02-21 01:21
그리드나 리스트뷰 같은 것들은 셀을 갱신하면 화면을 다시 그리게 됩니다.
셀 수정이 많아서 몇 천번씩 다시 그릴려면 장난 아니게 느리겠죠.
그래서 데이터를 갱신하기 전에 BeginUpdate를 걸어주고 갱신이 끝나면 EndUpdate를 호출해서
화면 갱신을 1번으로 제한하면 속도가 무진장 빨라집니다.
4000줄 정도면 전체 갱신에 0.1초 밖에 안 걸리기 때문에 ProcessMesssages를 호출할 필요도 없습니다.

BeginUpdate
for(...) {}
EndUpdate

해당 함수 사용법은 볼포나 인터넷 검색을 참고하세요.

http://blog.naver.com/PostView.nhn?blogId=ysaraha&logNo=50011431492



김태우 님이 쓰신 글 :
: 스트링그리드에서 셀부분이 길면 오래 걸리네요.
:
: 흠...
: 한 4000개의 줄을 읽어 들여서
:
: for(int j = 1; j < row+1; j++)
:                 {
:                     for(int i = 1; i < col+1; i++)
:                     {
:                         MainForm->StringGrid1->Cells[i][j] = XLSheet.OlePropertyGet("Cells", j , i).OlePropertyGet("Value");
:                         MainForm->StringGrid1->Cells[0][j] = IntToStr(j);
:                         MainForm->StringGrid1->Cells[i][0] = IntToStr(i);
:                         Application->ProcessMessages();
:                     }
:                 }
:
: 위와 같은 방식으로 넣어 버리면...
: 무지하게 오래 걸립니다..
: 물론 프로그램이 먹통되는 현상은 없앴지만요..
: 원래 이렇게 느린건지....좋은 방법이 없을까나요..?

+ -

관련 글 리스트
66339 스트링그리드에서 셀부분이 길면 오래 걸리네요. 김태우 817 2012/02/20
66340     Re:스트링그리드에서 셀부분이 길면 오래 걸리네요. 아제나 905 2012/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.