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
[19750] Re:많은 도움이 되었습니다..정말 감사합니다..^^
에궁... [skyweb] 1009 읽음    2002-07-02 16:38

김백일 님이 쓰신 글 :
: 에궁... 님이 쓰신 글 :
: : 우선 답변 주셔서 감사합니다..
: :
: : 그럼..Win32 탭에 잇는 트리뷰로는 열고 닫을때 빨리 열고 닫는 방법은 없는걸까요.....
:
: Win32 TreeView의 한계니까 어쩔 수 없을 겁니다.

: : 대안은 VirtualTreeview 이 컴퍼넌트를 사용하는거 밖에는 없을까요...
: :
: : 이거 사용할려구 받아 봤더니..@_@.....어지럽네염...
:
: 솔직히, 저도 써볼려다 어려워서 포기했습니다. -_-;;
: Win32 TreeView와 구조가 많이 다르더군요.
: 누가 이 컴포넌트 강좌 좀 해 주었으면 좋겠네요.
:
: : 김백일 님이 쓰신 글 :
: : : 에궁... 님이 쓰신 글 :
: : : : 트리1은 디비에서 데이터를 가져와서 노드를 생성합니다..
: : : :
: : : : 문제는 노드수가 1000개 정도 되자 노드를 열고 닫을때(+)을 클릭할때 마다
: : : :
: : : : 프로그램이 다운된거처럼 아무런 키도 이벤트도 먹지 않습니다..
:
: "다운된 것처럼" 보이지 않게 하려면, 멀티쓰레딩을 사용해야 합니다.
: 그럼 노드 작업은 스레드에서 처리하도록 하고,
: 메인 프로그램은 새로 이벤트를 받을 수 있습니다.
: 이렇게 오래 걸리는 작업을 처리할 때는 스레드의 사용은 필수적입니다.
:
: 빌더에서 쓰레딩을 사용하는 방법은 무지 간단합니다.
:
: [File]-[New...]에서 [Thread Object]를 선택하셔서
: TThread 에서 상속받은 새 스레드 클래스를 만드신 후,
: 이 클래스의 Execute()안에 코딩만 하면 됩니다.
:
: (Java에서의 멀티스레딩을 해보신 분은 아시겠지만,
: TThread의 사용법도 java.lang.Thread 클래스와 거의 비슷합니다.
: 이들 클래스는 디자인 패턴(Design Patterns)에서 말하는 COMMAND 패턴과 유사한 구조의 클래스지요.)
:
: ProgressBar 같은 컨트롤로 작업 진행도를 표시하는 코드 같은 걸 넣으면
: 사용자에게 더 친절한 프로그램이 되겠네요.
:
: 자세한 것은 빌더의 쓰레딩(TThread)에 대한 설명이 나와있는 책들을 참고하세요.
:
: : : : 리스트뷰처럼..BeginUpdate, EndUpdate 이런 메소드는 없나염..^^;
: : : :
: : : : 열고 닫을때 마다...돌아 버리겠습니다..
: : :
: : : 당근 있지요. 조금 혼동하셨네요.
: : :
: : : 리스트뷰와 방법이 똑같습니다.
: : : TListNodes::BeginUpdate(), TListNodes::EndUpdate() 입니다.
: : : 즉,
: : : ListView1->Items->BeginUpdate();
: : : // 노드 작업
: : : ListView1->Items->EndUpdate();
: : :
: : : 트리뷰도 마찬가지로
: : : TTreeNodes::BeginUpdate(), TTreeNodes::EndUpdate() 입니다.
: : : 즉,
: : : TTreeView1->Items->BeginUpdate();
: : : ....
: : : TTreeView1->Items->EndUpdate();
: : :
: : : 그리고 속도가 제일 중요하시다면
: : : Virtual Treeview란 컴포넌트를 써보세요.
: : : http://www.lischke-online.de/VirtualTreeview/VT.html
: : :
: : : 지원하는 기능이 엄청 많고, 속도도 무지 빠릅니다. (Win32 TreeView가 아닙니다.)
: : : 보통 백만개 정도의 노드를 삽입하는데, 1~2초 정도밖에 안걸립니다.
: : : 반면에, 실행파일 크기가 좀 커지고, 결정적으로 사용법이 좀 어렵습니다.

+ -

관련 글 리스트
19736 [질문] 트리뷰에서 노드가 많을경우 느려지는 문제.. 에궁... 764 2002/07/02
19739     그건 TTreeNodes의 멤버함수지요. 김백일 1203 2002/07/02
19742         Re:[재질문] 답변 감사드립니다... 에궁... 917 2002/07/02
19745             멀티쓰레딩을 사용하세요. 김백일 1238 2002/07/02
19750                 Re:많은 도움이 되었습니다..정말 감사합니다..^^ 에궁... 1009 2002/07/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.