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
[6269] Re:TreeView에 대해, 좀 다른 관점에서...
박지훈.임프 [cbuilder] 2276 읽음    2001-03-22 21:26
이쁜이 님이 쓰신 글 :
: TreeView를 사용하는데 좀 어려운 난관에 부딪쳐서 글을 씁니다.
: DB에 저장되어 있는 Data의 Level에 따라 Menu No에 해당되는 내용이 Sub Item으로 TreeView에 나오게 하려는데 잘 안되네요.
: 예를 들어.
: DB의 Data가
: -----------------------------------                         + 10 Action
: Menu No |  Menu Title     | Level                                |-  Sixty Seconds
: -----------------------------------                              |-  Metrix
:   10    |  Action         |   0                             + 20 Comedy
:   20    |  Comedy         |   0         Treeview 에서는          |-  Dum & Dummer  
:   30    |  Drama          |   0         =============>      - 30 Drama 
:   10    |  Sixty Seconds  |   1
:   10    |  Metrix         |   1 
:   20    |  Dum & Dummer   |   1
: -----------------------------------
: 고수님들 부탁합니다.
: 참고로
: Text = Query->FieldByName("Menu_Title")->AsString;
: TreeView1->Items->Add(TreeView1->Selected, Text);
: 이렇게 기술했더니 Level에 관계없이 모두 TreeView의 첫레벨에 나타나요. (당연하겠지만) 
:


임펠리테리입니다.

1차원적인 디비의 데이터로 2차원적인 트리를 구성하려니 복잡하시죠? 일단... 이쁜이님이 설계하신 테이블 레이아웃 대로라면 제대로 트리를 구성할 수가 없겠네요. 레벨만이 중요한 것이 아니라, 어떤 차일드 노드가 어느 패어런트 노드 밑에 있는가를 저장해둬야 하지요?

그러려면, 물론 몇가지 방법이 있겠습니다만, 일단 제가 금방 생각한 방법으로는, 테이블에 parent 필드를 추가한 후 모든 노드 레코드마다 패어런트 노드의 번호를 기억하고 있는 것이 좋겠네요. 그리고 최상위 노드들은 parent를 0으로 한다든지 하면 되겠구요.

디비에 저장하실 때는, 먼저 최상위 노드들부터 주루룩 저장한 후, 각 레벨 순으로 차일드들을 저장하면 되겠구요. 디비에서 읽어들일 때는 역시 최상위노드들 부터 주루룩 읽어서 트리뷰에 추가한 다음, 각 레벨별로 parent를 따라서 서브노드로 추가하면 되겠구요.

그럼 참고하시길...

+ -

관련 글 리스트
6261 TreeView에 대해 이쁜이 2170 2001/03/22
6269     Re:TreeView에 대해, 좀 다른 관점에서... 박지훈.임프 2276 2001/03/22
6265     Re:TreeView에 대해 공님 2272 2001/03/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.