1. TreeView의 OnChange이벤트를 이용해야겠죠
2. 선택된 Item과 Frame과 연관성이 있어야겠죠
선택된 Item과 Frame과 연관성만 정해져있다면
Frame을 change하는것은 문제가 없겠죠
3. 그럼 TreeView의 Item과 Frame과 어떻게 연관성을 지어주느냐?
3.1 방법1
* ImageIndex를 이용하는 방법
이미지인덱스에 Frame의 정보를 넣어두세요
Frame을 배열에 넣어두고
배열인덱스를 넣던가요
TFrame *frame[3];
frame[0]=MyFrame1;frame[1]=MyFrame2;
frame[2]=MyFrame3;
이미지 인덱스 대신 StatusIndex를 이용해도 됩니다.
MyFrame1->Tag=1;
MyFrame2->Tag=2;
MyFrame2->Tag=3;
그밖에 여러가지 방법....
3.2 방법2
TTreeNode 의 Data에 Frame의 포인터를 넣어두세요
아래 샘플처럼 ( 샘플은 Frame대신 Panel을 사용햇습니다.)
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TTreeNode *Node;
Node=TreeView1->Items->Add(NULL,"Panel1");
Node->Data=(void *)Panel1;
Node=TreeView1->Items->Add(NULL,"Panel2");
Node->Data=(void *)Panel2;
Node=TreeView1->Items->Add(NULL,"Panel3");
Node->Data=(void *)Panel3;
Node=TreeView1->Items->Add(NULL,"Panel4");
Node->Data=(void *)Panel4;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
if(TreeView1->Selected)
{
TPanel *pn=(TPanel *)TreeView1->Selected->Data;
pn->Visible=true;
pn->Align=alClient;
pn->BringToFront();
}
}
//---------------------------------------------------------------------------
그럼...
정유수 님이 쓰신 글 :
: 말씀하신대로 프레임을 사용했습니다.
: 이런식의 장면전환에서는 프레임사용이 거의 정설이니 말이지요.
:
: 그런데 문제는
:
: 왼쪽의 트리뷰가 프레임을 바꿔주는 길잡이 역할을 해야 하는데..
:
: 각각의 트리뷰 아이템에 click 이벤트를 걸어주어 해당 아이템에 연결되어 있는 프레임만 Visible = False 나
:
: Visible = True 걸어주려면 방법이 없냐는 질문이었습니다.
:
:
:
: smleelms 님이 쓰신 글 :
: : 여러가지 방법이 있을 수 있겠지만 Frame을 사용하시면 됩니다.
: : 아래 링크의 글을 참고해 보시기 바랍니다.
: :
: :
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=45306
: :
: : 정유수 님이 쓰신 글 :
: : : c++초보입니다.
: : :
: : : 왼쪽에 프레임을 하나 만들고 그 안에
: : :
: : : 트리뷰를 심어 놓았습니다.
: : :
: : : 트리뷰에서 각 아이템을 클릭시
: : :
: : : 오른쪽의 프레임에 장면전환(?)을 하도록 하고 싶은데요..
: : :
: : : 이런 경우 어떻게 해야 하는지요?
: : :
: : :
: : :
: : : 그림 파일 첨부합니다.