skjoon 님이 쓰신 글 :
: 트리노드에 체크박스를 넣으려고 하고 있습니다..
:
: 처음에는 DisplayRect()를 이용해서 노드의 위치를 구하고, TTreeView의 Ident 속성값을 변화시켜 노드의 위치를 뒤로 좀 이동한 후에, 노드의 앞부분에 TCheckBox를 생성해서 넣어주었습니다..
: 원하는 모양을 만들기는 했는데.. 암만봐도 좀 어색하더군요.. ^^;; 노드 상태가 변할때마다 새로 체크박스 위치, 보이기 조정하는 것도 있구요..
:
: 그래서 아이콘을 체크박스 모양으로 넣어서 변하게 하는 방법을 했습니다..
: 그러던 중에 TTreeView의 StateImages라는 넘을 봤는데요..
: (
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=74 참조했습니다.)
:
: 도움말에 보니까..
:
: Use StateImages to provide a set of bitmaps that reflect the state of tree view nodes. The state image appears as an additional image to the left of the item's icon.
:
: 대충 생각하기에 아이콘의 왼쪽에 또 아이콘을 만들어준단 얘기같네요.. 맞나요? ^^;;
:
: 그래서 StateImages에 이미지리스트를 설정하고, StateIndex를 줘봤는데.. 아무 변화가 없네요..
:
StateImages에 이미지리스트를 설정하시되 3개의 이미지를 가지고 있어야 되는 것 같더군요.
그리고 TreeView의 각 아이템의 StateIndex를 1로 해 주십시오.
0으로 하니까 초기에 이미지가 보이지 않더군요.
그리고 OnClick 이벤트에서 다음과 같이 해 주시면 됩니다.
if ( TreeView->Selected->StateIndex = 1 )
TreeView->Selected->StateIndex = 2;
else
TreeView->Selected->StateIndex = 1;
StateIndex가 0일 경우에는 이미지가 보이지 않았습니다.
그래서 1과 2로 이미지의 변화를 주도록 한 것입니다.
3개의 이미지가 필요한 이유입니다.
: 이넘을 사용하려면 어떻게 해야하는지.. 고수님들 도움 부탁드립니다..
: 빌더를 몇년만에 다시 쓰려니.. 잘 모르겠네요.. ^^;;
:
: (첨부한 그림처럼 구현을 하려고 합니다..)