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
[46124] Re:트리뷰에서 데이터 읽을때 어떻게 하나요???
장성호 [nasilso] 1276 읽음    2006-08-10 16:59
TTreeView아이템은 TTreeNode *형입니다.
TTreeNode 의 Data는 void* 형입니다.

void * 이므로  어떤형식의 Data라도 그 주소를 저장하면 됩니다.
아래와 같이 클래스 포인터를 저장해도 되고
구조체의 주소를 저장해도 되고...

아래는 트리에 파일이름을 아이템으로 등록할때
마우스가 움직이면 파일의 상세정보를 트리의 힌트로 보여주는 코드입니다.

class MyFileInfo
{
  public:
     int ftype;
     int fsize;
     String fpath;
     String fname;
     DateTime dt_create;
     DateTime dt_edit;
     DateTime dt_access;
};

//파일정보를 넣을때..
    MyFileInfo*finfo=new MyFileInfo;
    finfo.fName="adfafd.txt";
    finfo.isize=123;
    TTreeNode *node=TreeView1->Items->Add(NULL,finfo.fName);
    node->Data=finfo;



//가져올때
void __fastcall TForm1::TreeView1MouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
    //
    TTreeNode *node=TreeView1->GetNodeAt(X,Y); //마우스 위치의 Node를 찾는다.
    if(node==NULL)return; //Node가 없으면 끝낸다.

    MyFileInfo*finfo=(MyFileInfo*)node; //===> 핵심 node의 Data에 있는 포인트 정보를 이용하여...
    String str;
    str="파일명 : "+finfo->fname \r\n사이즈:"+IntToStr(finfo->isize)+"\r\n최종수정일"+dt_edit.FormatString("yyyy-mm-dd");
   TreeView1->Hint=str;

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


//추신
이 void * 형의 Data변수는 TListView의 아이템인 TListItem에도 있습니다.
이를 이용만 잘하면 아주 유용하게 쓸수 있습니다.

예를 들어 
Sorting할때도 쓰면 좋구
만약 DB에 정보를 리스트에 뿌려줄때
리스트에는 보여주면 안되는 아이디같은것을 숨겨두고 참조할때도 유용합니다.


이범상 님이 쓰신 글 :
: 트리뷰에 보니 각 노드에 데이터 입력이 되던데
: 이거 어떻게 사용합니까???
:
: TreeView3->Items->AddChild(bootHeadNode,nodeCaption);
: //데이터 입력
: bootHeadNode->Data = new int(0);
:
: //데이터 읽기
: *(int *)(bootHeadNode->Data);
:
: bootHeadNode은 트리노드인데 제가 사용법을 잘몰라서 위처럼 사용해서
: 노드에 데이터를 입력하고 읽고있습니다.
:
: 근데 아무리봐도 영 이상해서 질문드립니다.
:
: 고수님들 갈켜주세요

+ -

관련 글 리스트
46122 트리뷰에서 데이터 읽을때 어떻게 하나요??? 이범상 793 2006/08/10
46124     Re:트리뷰에서 데이터 읽을때 어떻게 하나요??? 장성호 1276 2006/08/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.