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
[52655] 답변 감사합니다!!
왕초보 [suroking] 973 읽음    2008-03-11 21:54
조대현.Clau 님이 쓰신 글 :
: 1) ImageList에 확대, 축소시의 아이콘을 모두 집어넣고 상태에 따라 번호를 바꾸어 주면 됩니다.
:     VirtualTreeView의 GetImageIndex 이벤트를 이용합니다.
:
: void __fastcall TFormDCPSelect::TreeDCPGetImageIndex(TBaseVirtualTree *Sender,
:       PVirtualNode Node, TVTImageKind Kind, TColumnIndex Column, bool &Ghosted,
:       int &ImageIndex)
: {
:     SDCPTree *dtDCP;
:     int iLevel;
:
:     // 선택과 일반상태의 Node일때
:     if(Kind == ikNormal | Kind == ikSelected){
:         // Node가 가지는 구조체얻기
:         dtDCP = (SDCPTree *)Sender->GetNodeData(Node);
:
:         // ImageList에 홀수(1,3,5...)는 축소아이콘
:         // ImageList에 짝수(0,2,4...)는 확대아이콘
:
:         // Node의 Level(깊이, 즉 최상위 Node로 부터 몇번째 Child인지) 구하기
:         iLevel = Sender->GetNodeLevel(Node);
:
:         // 현재 Node가 확장 상태인지 판단
:         // ImageIndex는 현 Node의 이미지를 그릴 ImageList Index
:         if(Sender->Expanded[Node]){
:             // Expand
:             ImageIndex = iLevel * 2 + 1;
:         }else{
:             // Collapse
:             ImageIndex = iLevel * 2;
:         }
:     }
: }
:
: 2) 아래는 확대/축소에 관계된 VirtualTreeView Demo소스입니다. 저도 이거보고 했습니다^^ 다른방법은 몰겠네요.
:
: procedure TDrawTreeForm.VDT1GetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
:   Column: TColumnIndex; var Ghosted: Boolean; var Index: Integer);
: var
:   Data: PShellObjectData;
: begin
:   if Column = 0 then
:   begin
:     Data := Sender.GetNodeData(Node);
:     case Kind of
:       ikNormal,
:       ikSelected:
:         begin
:           if Sender.Expanded[Node] then
:             Index := Data.OpenIndex
:           else
:             Index := Data.CloseIndex;
:         end;
:       ikOverlay:
:         if (Data.Attributes and SFGAO_SHARE) <> 0 then
:           Index := 0
:         else
:           if (Data.Attributes and SFGAO_LINK) <> 0 then
:             Index := 1;
:     end;
:   end;
: end;

+ -

관련 글 리스트
52613 Virtual Tree Vew 아이콘 변경 질문입니다. 왕초보 1097 2008/03/08
52623     ImageIndex가 표시될 이미지번호입니다. 직접 바꾸시면 됩니다. 조대현.Clau 1525 2008/03/10
52655         답변 감사합니다!! 왕초보 973 2008/03/11
52614     Re:Virtual Tree Vew 아이콘 변경 질문입니다. 김상구.패패루 1160 2008/03/08
52657         답변 감사합니다!! 왕초보 840 2008/03/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.