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
[59251] Re:Re:Re:TreeView 질문 드립니다.
skjoon [skjoon] 1297 읽음    2009-11-27 10:10
^^;; 제 나름대로 질문의 의미를 파악하고 구현을 해봤는데요.
확인해보세요.. 이게 맞길 빌겠습니다.

첨부한 실행파일도 같이 확인해보세요.

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    TTreeNode *pRootNode = NULL, *pChildNode = NULL;

    TreeView1->Items->Clear();
    pRootNode = TreeView1->Items->Add(NULL, "ROOT");
    pRootNode->ImageIndex = 3;

    pChildNode = TreeView1->Items->AddChild(pRootNode, "Image");
    pChildNode->ImageIndex = 0;

    pChildNode = TreeView1->Items->AddChild(pRootNode, "Movie");
    pChildNode->ImageIndex = 1;

    pRootNode->Expand(true);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::TreeView1Click(TObject *Sender)
{
    TPoint pnt;
    GetCursorPos(&pnt);
    // 전체화면에서의 마우스포인터 위치를 트리뷰내부에서의 상대적인 위치로 변환
    pnt = TreeView1->ScreenToClient(pnt);

    // 현재 마우스포인터 위치에 있는 노드를 찾는다.
    TTreeNode* pSelNode = TreeView1->GetNodeAt(pnt.x, pnt.y);
    if(pSelNode == NULL) {
        Label1->Caption = "No Node Clicked.";
        return;
    }

    switch(pSelNode->ImageIndex) {
        case 3: // Root Node
            Label1->Caption = "Root Node Clicked.";
            break;
        case 0: // Image Node
            Label1->Caption = "Image Node Clicked.";
            Panel1->Visible = true;
            break;
        case 1: // Movie Node
            Label1->Caption = "Movie Node Clicked.";
            Panel1->Visible = false;
            break;
    }
}
//---------------------------------------------------------------------------


입문. 님이 쓰신 글 :
: 도저히 못찾겠네요.
: 그럼..
: void __fastcall TfrmSchedule::TreeView1Click(TObject *Sender)  
:
: 이곳에서 OpenDialog->Filter->FilterIndex = 0
:               OpenDialog->Filter->FilterIndex = 1
: 0은 이미지로 1은 무비로 클릭 시.
: 0은 오른쪽 판넬이 true
: 1은 오른쪽 판넬이 false
:
: 이렇게 가능한지요. (__)
:
:
: skjoon 님이 쓰신 글 :
: : 단지 Panel의 Visible 속성을 변경할 때 에러가 생기는 경우에 대해서는 상황 판단이 힘들구요.
: : 일단 TreeView1->Selected가 NULL일 경우가 의심되네요.
: :
: : 다음과 같이 myNode를 검사해 주시면 어떨까요?
: :
: :
: : void __fastcall TfrmSchedule::TreeView1Click(TObject *Sender)
: : {
: : AnsiString  FileName;
: : 
: : 
: :         if(TreeView1->Items->Count <= 0 )return;
: : 
: :         Image->Show();
: : 
: : 	    TTreeNode *myNode = TreeView1->Selected;
: :             if(myNode == NULL) return; // 여기 추가
: :             if(myNode->Level == 1)
: :             {
: :     	        Effect = (TdtEffect*)TreeView1->Selected->Data;
: :                 FileName = Effect->Path;
: :                 FileName = FileName + Effect->FileName;
: :        	        Image->Picture->LoadFromFile(FileName);
: :                 Panel5->Visible = true;
: : 	        }else
: :             {
: :                 Panel5->Visible = false;
: :             }
: : }
: : 

+ -

관련 글 리스트
59232 TreeView 질문 드립니다. 입문. 1264 2009/11/25
59235     Re:TreeView 질문 드립니다. skjoon 1240 2009/11/25
59247         Re:Re:TreeView 질문 드립니다. 입문. 1222 2009/11/26
59251             Re:Re:Re:TreeView 질문 드립니다. skjoon 1297 2009/11/27
59266                 skjoon 님.. 너무 감사합니다. (ㅜㅜ) -내용 무- 입문. 1052 2009/11/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.