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
[40140] Re:Re:Re:[질문]메소드의 리턴값을 받은것...
장성호 [] 745 읽음    2005-05-12 15:26
테스트 해보셨습니까?  무엇을 가지고 제 답변을 추측이라 말씀하시는지요?

제 답변은 추측이 아닙니다.

VirtualStringTree에 대해 잘 모르겠다고 했지만
제 설명은 VirtualStringTree에 대한 설명이 아니거든요

제 답변은 일반적 C++에 void * 형에 대한 설명과
VCL의 한두 클래스에 대한 설명입니다.

이 설명이   VirtualStringTree 를 어떻게 사용하는지 설명해주는것보다
더 정확한 답변이라 생각됩니다.




볼레롱 님이 쓰신 글 :
: 추측으로 답변해 주는 것은 위험합니다.
:
: 정확한 것이 아니라면,   오히려 답변안해 주는 것이 더 좋을 수도 있습니다.
:
: 그리고, 처음 질문하신 분은  먼저 help 를 보시고 질문하시는 것이 좋을 듯합니다.
:
: 예제 소스 몇줄만  보면,   헷가리고, 알기가 힘들지요.
:
: 그럼!
:
:
: 장성호 님이 쓰신 글 :
: : 질문이 뭔지는 잘모르겠는데요
: :
: : 먼저
: : TListView 에서
: : ListView->Items->Add();
: : 함수는  TListItem * 형을 반환합니다.
: :
: : 두번째로
: : VirtualStringTree 는 잘모르겠지만
: :
: : TTreeNode 클래스를 보면  Node->Data가 void * 로 선언되어있습니다.
: :
: : 즉 아무거나 point를 넣어줘도 된다는거죠
: :
: : 예를 들어
: : TTreeNode *node;
: : node=treeview->Items->Add(NULL,"adsfad");
: :
: : //이런식이거나
: : char  myname[10];
: : node->Data=&myname[0];
: :
: : //이런식으로
: : TListItem *Item;
: : Item=ListView->Items->Add();
: : node->Data=Item;
: :
: : 위와같이 TTreeNode의 Data에는 void * 형이나까 아무것의 point를 넣어도 무방하다는거죠
: :
: : 그럼 가져올때는
: :
: : TListItem *Item;
: : Item=(TListItem *)node->Data;
: :
: : 이런식으로 void * 형을 내가 넣어준 포인터형으로 형변환 해서 사용하면 됩니다.
: :
: : 이것을 잘이용하면 매우 유용하게 쓰입니다.
: :
: : 질문에는 Node->Data에  구조체를 넣었는데요
: : 내마음대로 구조체나 클래스를 만들어서 넣어도 전혀 무방합니다.
: :
: :
: : 그럼
: : 
: :
: :
: :
: :
: :
: : 하안인 님이 쓰신 글 :
: : : TListColumn *newColumn;
: : : TListItem *ListItem;
: : : TListView *ListView = new TListView(this);
: : :
: : : ....
: : : newColumn = ListView->Items->Add();
: : :
: : : ListView->Items->Add()를 newColumn으로 받은것은
: : : items의 메소드가 add의 원형이 TListColumn * 이라서
: : : newColumn으로 받은것으로 알고있는데요..
: : :
: : : VirtualStringTree에서 보면
: : :
: : :   TVirtualNode* Node = Tree->AddChild(BasisNode, NULL);
: : :   TPropertyData* Data = (TPropertyData*)Tree->GetNodeData(Node);
: : :
: : : 이렇게 하는 경우도 있고
: : : typedef struct {
: : :    TVirtualNode *Node;                    // Node Address.
: : :    AnsiString NodeTitle;                  // Label for the node.
: : : } TestRec, *ptrTestRec;
: : :
: : :  PtrTestName = (TestRec *) vst->GetNodeData(LastNode);
: : :
: : : 위와 같이 받는 경우도 있더라구요..
: : :
: : : 그래서 원형을 찾아보니 GetNodeData는
: : : void *TBaseVirtualTree::GetNodeData 인데요...
: : :
: : : 위와 같이 사용해도 상관없는 이유는 무엇인지요...
: : :
: : : 무조건 cast연산자로 바꾸면 되는것인지...

+ -

관련 글 리스트
40118 [질문]메소드의 리턴값을 받은것... 하안인 797 2005/05/11
40123     Re:[질문]메소드의 리턴값을 받은것... 장성호 785 2005/05/11
40137         Re:Re:[질문]메소드의 리턴값을 받은것... 볼레롱 773 2005/05/12
40176             Re:Re:Re: 죄송합니다. 장성호 734 2005/05/14
40140             Re:Re:Re:[질문]메소드의 리턴값을 받은것... 장성호 745 2005/05/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.