|
초보 님이 쓰신 글 :
: 초보입니다.
: 제가 프로그램을 짜는데 TreeView를 이용해서 대분류-중분류-소분류 선택항목을 만들어서 사용하려고 하는데 잘안되네요.
: ImageList등을 이용해서 TreeView에 CheckBox를 넣는건 했는데 TreeView에서 마우스 버튼을 한번 누를때마다 CheckBox가 선택 되게끔 하고 싶은데 잘 안되네요. 참고로 Ctrl이나 Shift키를 눌러서 다중 선택을 하는게 아니고 마우스 클릭만으로 다중 선택을 하고 싶습니다.
: 고수님들의 조언 부탁드립니다...ㅠ.ㅠ
//--------------------------------------------------------------------------------
체크박스 이미지를 클릭할때마다 바꿔주고 싶으신건가요?
제가 사용하는 방법입니다.
저는 Image와 StateImage 두 개를 사용했구요.
StateImage를 클릭할때에만 체크박스가 변하도록 만들었습니다.
//--------------------------------------------------------------------------------
/*
NODE_UNCHECKED / NODE_CHECKED 는 StateImage의 선택/해제 이미지 인덱스입니다.
*/
void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TTreeNode* pNode = NULL;
THitTests HT = NULL;
if( Button == mbLeft )
{
// 트리노드를 클릭했는지 확인
pNode = ((TTreeView*)Sender)->GetNodeAt(X, Y);
if( pNode )
{
HT = ((TTreeView*)Sender)->GetHitTestInfoAt(X,Y);
if( HT.Contains(htOnStateIcon) ) // StateIcon을 클릭했을 경우
{
// 노드의 체크박스 변화시키기
pNode->StateIndex = (pNode->StateIndex == NODE_UNCHECKED) ?
NODE_CHECKED : NODE_UNCHECKED ;
}
}
}
}
//-----------------------------------------------------------------------------------
도움이 되시길...
|