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
[54202] Re:TTreeView 트리뷰에서 node들의 주소가 parent를 바꾸니 변합니다.!
장성호 [nasilso] 1301 읽음    2008-08-04 12:30
음....
TTreeView에서 TreeNode의 주소가 바뀌는것은?

Parent 윈도우 핸들이 바뀌면  그 하위 윈도우 핸들은 모두 다시 생성합니다.
TreeView로 윈도우 핸들이 새로 만들어지고 Item들도 모두 새로 생성됩니다.

TreeNode에 들어있는 Text , ImageIndex , Data등의 정보는 MemoryStream에 저장했다가
다시 Create한후에 새로  TreeNode를 만들어 주면서 MemoryStream에 들어있던 정보로 셋팅해 줍니다.

그래서 원래 모양 그대로 인것처럼 보일뿐 사실은 Items가 Clear 되었다가 새로 생성된것입니다.


그러므로 원론적으로 주소를 그대로 유지하는 방법은 어렵습니다.

그밖에 TreeNode의 주소가 바뀌는경우

Form의 Parent를 바꾸는 경우 말고도

1. 그냥 TreeView의 Parent를 바꿔도 같은 현상이 나구요
(혹 이경우 같은 주소가 나오는경우가 있더라도 삭제되고 새로 생성된것이 똑같아서 그럴뿐.. 원론적으로는 주소가
  새로 만들어진것 입니다.)


2. Form이나 TreeVew를 포함한 Parent 중에 아무거나에서  RecreateWnd() 를 호출해도
     Form1->RecreateWnd();
    TreeVeiw1->Perform(CM_RECREATEWND, 0, 0);
    ..

3. Form의  Style을 바꾸어도...
    Form의 Style을 fsNomal 이서 faStayOnTop등으로 바꾸면
    RecreateWnd()가 호출됩니다.


----------------------------------------------------------------------------------

[TreeNode의 포인터로 접근하는 방법]

TreeNode의 주소는 RecreateWnd가 호출되면서 변경되어버리지만
TreeNode의 Text나 ImageIndex, SelectedIndex,StateIndex, Data  등은 변하지 않습니다.

위 내용중에 특별히 Data 에다가 특별한 Node정보를 넣어두고
RecreateWnd 호출될때 Data의 Node를 Reset해주고
Data를 통해서 Node에 접근하면 Node 메모리 주소가  바뀌어도 문제없이 access가능할것입니다.

그럼..


한빈짱 님이 쓰신 글 :
: 트리뷰에 아이템을 추가하고,
:
:     TreeView1->Items->Clear();
:     TTreeNode *pNode = TreeView1->Items->Add(NULL, "First node");
:     pNode = TreeView1->Items->Add(NULL, "Second node");
:
: 트리뷰를 가진 폼의 parent를 바꿔 보니.
:     Parent = Form1;       <-->        Parent = NULL;
:
: node의 주소가 변하네요.
: 트리뷰에 아이템추가하고 node의 주소를 저장해뒀다가,
: 필요할때 접근하고 했었는데..
: Parent가 변할 때 node의 주소가 바껴버려서.. 어떻게 해야될지 ㅜㅜ
: node주소를 고정되게 사용하는 법 없나요?

+ -

관련 글 리스트
54126 TTreeView 트리뷰에서 node들의 주소가 parent를 바꾸니 변합니다.! 한빈짱 1267 2008/07/28
54202     Re:TTreeView 트리뷰에서 node들의 주소가 parent를 바꾸니 변합니다.! 장성호 1301 2008/08/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.